Abstract:
A pattern analysis system enables a user to obtain specific analysis from multi-dimensional storage structures. The patterns analysis system guides the user interaction through the selection of specific available patterns. This enables the user to gain access to analytics data available in the multi-dimensional storage structure without specific knowledge of a command system syntax or semantics. Also, the user does not need knowledge of the contents or organization of the multi-dimensional storage structure.

Description:
BACKGROUND 
       [0001]    1. Field of the Invention 
         [0002]    This invention is related to a data query system. Specifically, the invention is related to a method and apparatus for a guided query system for multi-dimensional storage structures. 
         [0003]    2. Background 
         [0004]    Current analytics applications attempt to provide easy access to analytic information. These applications get their data from transactional systems through a process involving extraction, transformation and loading. In this process, transaction data is collected, cleaned, codified and reorganized and loaded by the analytic application to generate reports and analysis. However, current analytic applications have many significant drawbacks. 
         [0005]    To obtain specific analytic information or data when the user is not aware of a pre-defined report or search for this data, a user of an analytic program must navigate a series of user interfaces to find the data necessary to answer their questions. This navigation of the available data is tedious and time consuming for the user. The navigation process diminishes the productivity of the user due to the extensive trial and error required to find the necessary data. These navigations lack any structure or guidance to assist the user in finding the necessary data for generating concrete analysis. 
         [0006]    Other database searching procedures and functions are unsuited or inefficient for the purposes of identifying specific analytic information where pre-defined searches or reports are not known to the user. Traditional search engines that allow the entry of English questions generate non-deterministic results and lack focus due to the difficulty of parsing the user&#39;s intent from the input of the English language text. To obtain deterministic results strictly defined codes or commands must be utilized. Even if English language phrases are correlated to these codes or commands in place of esoteric programming language commands or codes, the user is required to understand the details of the data structure being queried and to understand the semantics and syntax necessary for the use of the commands and codes to construct precise queries using these commands, codes and knowledge of the data structure. Hybrids of these systems have not significantly mitigated these drawbacks. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0007]    Embodiments of the invention are illustrated by way of example and not by way of limitation and the figures of the accompanying drawings in which like references indicate similar elements. It should be noted that different references to “an” or “one” embodiment in this disclosure are not necessarily to the same embodiment, and such references mean at least “one.” 
           [0008]      FIG. 1  is a diagram of one embodiment of a pattern analysis system. 
           [0009]      FIG. 2  is a flowchart of one embodiment of a pattern analysis process. 
           [0010]      FIG. 3A  is a flowchart of one embodiment of a pattern for trend analysis. 
           [0011]      FIG. 3B  is a flowchart of one embodiment of a pattern for volume analysis. 
           [0012]      FIG. 3C  is a flowchart of one embodiment of a pattern for count analysis. 
           [0013]      FIG. 3D  is a flowchart of one embodiment of a pattern for benchmark analysis. 
           [0014]      FIG. 3E  is a flowchart of one embodiment of a pattern for comparison analysis. 
           [0015]      FIG. 4A  is a diagram of one embodiment of a menu-based user interface for pattern analysis. 
           [0016]      FIG. 4B  is a diagram of one embodiment of a text-based interface for pattern analysis. 
           [0017]      FIG. 5  is a flowchart of one embodiment of a process for pattern design. 
       
    
    
     DETAILED DESCRIPTION 
       [0018]      FIG. 1  is a diagram of one embodiment of a pattern analysis system. In one embodiment, the pattern analysis system includes at least one computer system  101  that implements a pattern service module  113 , pattern engine  115  and a pattern designer  117 . In some embodiments, the pattern analysis system may be a distributed system. The distributed system can include any number of remote computing devices  133  that communicate with the computer system  101  over a network  111 . The computer system  101  and remote computer system  133  can be any type of computing devices including desktop computers, dedicated servers, workstations, laptop computers, network elements, handheld devices and similar computing devices. Network  111  may be a local area network (LAN), a wide area network (WAN), such as the Internet, or similar telecommunication system. The network  111  may be composed of any number of network elements and communicate over any number of mediums including wireless communications and wired communication lines. 
         [0019]    The computer system  101  can implement the pattern analysis system as software, hardware components or any combination thereof. In one embodiment, the pattern analysis system is implemented primarily in an application layer  145  of a local software environment  127  that includes an interface layer  103 , data management layer  125 , model administration layer  109  and a metadata management layer  107 . The application layer  145  may include any number of applications other than the pattern analysis system, which operate within the software environment  127 . The user interface layer  103  provides standard user interface elements including windows, buttons, fixed fields and similar user interface elements that enable a user to view and interact with the pattern analysis system and the data output by the components of the pattern analysis system. The data management layer  125  manages the retrieval of data, storage of data and querying that involve a multi-dimensional storage structure and/or a storage device or database in which a multi-dimensional storage structure  129  is stored. Data management layer  125  can manage any number of multi-dimensional storage structures  129 , which may be stored locally or remotely in any number of storage devices  131 ,  139 . As used herein a “multi-dimensional storage structure” refers to a data source with data organized by at least two types of relational tables, dimensional tables and measure tables (sometimes referred to as fact tables), where dimensional tables contain categorical data and measure tables contain numerical data and the two types of tables are correlated via foreign keys. 
         [0020]    The software environment  127  may also include a metadata management layer  107 . The metadata management layer  107  provides a reference for all available data structures, resources and functions within the software environment  127 . Any of the other layers can draw on and interface with the metadata management layer to obtain this information. The model administration layer  109  facilitates the storage and retrieval of models such as patterns for use by the components of the pattern analysis system. 
         [0021]    The pattern analysis system includes a pattern service module  113 , a pattern engine  115  and a pattern designer  117 . The pattern service module  113  interacts with the user interface layer  103  and receives user input to facilitate the interaction of the user with the pattern designer  117  and the pattern engine  115 . The pattern service module  113  interfaces with the user interface layer  103  and the other aspects of the software environment  127  to generate and display the guided user interface that enables the user to select a pattern and input pattern parameters. The pattern service module  113  then passes the pattern selection and pattern parameters to the pattern engine  115 . The pattern engine  115  executes the selected pattern and pattern parameters and generates a report. The patterns engine  115  then returns the report, data and related output directly through the user interface layer  103  to the user or back through the pattern service module  115 , which in turn displays the generated report through the user interface  103 . 
         [0022]    The pattern designer  117  includes an input editor  119 , report creator  121  and output formatter  123 . The pattern designer  117  is an application that enables the user to generate new patterns, which then can be stored and utilized by the user or other users. These new patterns are managed by the model administration layer  109 . The input editor  119  is a component that enables the user to define a set of parameters that are associated with a pattern. This defined set of parameters limits or specifies the types of data that the associated pattern can process or that are needed for processing by the pattern. A “set,” as used herein, refers to any positive whole number of items, including one item. The input editor  119  defines a set of parameters and is also used when generating the guided pattern selection to identify the allowable set of parameters to be used with the pattern. The input editor  119  also allows the user to define a name for the definition, an associated ‘user intent’ and an associated report in which the input is used. The user intent is an identifier that can be used by the guided pattern selection process to identify the data (e.g., analysis results in the form of reports) that the user is seeking. 
         [0023]    The report creator  121  is a component that enables the user to define the report generation sequence, to identify the name of the report, to identify a type for the result, and to identify an output format for the result. The report sequence is executed by the pattern engine  115  to obtain the results sought by a user. The report sequence identifies a set of steps for processing the pattern parameters and retrieving necessary information from the multi-dimensional storage structure of the parameters of the pattern specified through the input editor. These steps include accessing the appropriate measure data and numeric data or measure data and dimensional data identified by the input parameters, as well as, defining a formula or algorithm to apply to the retrieved data (e.g., analysis results, such as volume, trend, comparison, benchmark, or count formulas). 
         [0024]    The output formatter  123  is a component that enables the user to define a name for the output, identify the analysis result associated with the output format and to identify a template for the display of the output. In one embodiment, the output formatter  123  may also allow the definition of the template or the modification of the template. The output formats defined by the output formatter  123  are used by the pattern engine  115  and/or the pattern service module  113  to organize and format the pattern result data to be displayed to a user. In one embodiment, the pattern engine  115  is responsible for output formatting, and pattern service module  113  is responsible for passing the formatted output to the presentation layer. 
         [0025]    In one embodiment, the pattern analysis system is a distributed system where the pattern service module  113 , pattern engine  115  and pattern designer  117  may be accessible over a network  111  at a remote computer system  133 . Similarly, the output of the pattern analysis system may be viewable over a network  111  through a remote computer system  133 . The remote computer system  133  can implement any part of the pattern analysis system or the software environment or any subcomponent thereof locally. In one embodiment, the remote computer system  133  implements a remote data storage management layer  137 . In one embodiment, the system provides a Rich Internet Application (RIA). Once the application is loaded on the remote computer system  133 , there is only data sent across the network  111 . 
         [0026]    In this embodiment, the pattern analysis system that is implemented on computer system  101  may access remote storage devices  139  and multi-dimensional storage structures  141  over the network  111  at the remote computer system  133 . Any number of computers and storage systems may operate over a set of networks to provide the functionality of the pattern analysis system in a distributor fashion. One of ordinary skill in the art would understand that the embodiment described herein is by way of example and that other variations utilizing the principles and components described herein are within the scope of the invention. 
         [0027]      FIG. 2  is a flowchart of one embodiment of the process of the pattern analysis system. In one embodiment the pattern analysis system is initiated by a user through a user interface or similarly activated. The pattern analysis system may be a component of or integrated with any type of program including performance management systems and similar enterprise software. The pattern analysis system through the pattern service module and user interface layer generates a pattern selection screen and user interface (Block  201 ). The pattern selection screen can present the available patterns through a text based, menu based or similar type of user interface. The available patterns are identified by an associated ‘user intent,’ allowing the user to identify a pattern without having to have specific knowledge of the pattern such as the processes and parameters of the pattern. The user interacts with the pattern selection screen of the user interface to select one of the available patterns (Block  203 ). The pattern services module presents only those patterns that are available as options to the user. 
         [0028]    Upon selection of a pattern, the user interface is updated by the pattern services module to display the set of parameters that are available and associated with the selected pattern (Block  205 ). The available parameters can be displayed through a parameter selection screen. Only the available parameters are displayed, allowing the user to select parameters appropriate for obtaining the desired data and that are supported by the selected pattern without requiring specific knowledge about the pattern or parameter associations from the user. The user then selects which of these parameters the user wishes to use in conjunction with the selected pattern (Block  207 ). The pattern services module then calls the pattern engine and provides a copy of the selected pattern and the selected parameters to the pattern engine (Block  209 ). 
         [0029]    The pattern engine then executes the pattern and generates a result using the selected pattern, the input parameters and data from the multi-dimensional storage structure (Block  211 ). The result data is then formatted into a report to be displayed to the user (Block  213 ). The patterns are a defined sequence of functions and parameters coupled with the output template that interact with the multi-dimensional data store to provide a user with desired analysis in a deterministic fashion without requiring the user to have knowledge of the available commands, queries, reports and/or contents and structure of the multi-dimensional storage structure. 
         [0030]      FIG. 3A  is a flowchart of one embodiment of a pattern for trend analysis. In the example pattern, a trend pattern is initiated by the selection of the specific trend pattern by a user (Block  301 ). A trend pattern can be selected by a user based on the user&#39;s intent identifier. For example, a trend pattern may be selected to calculate a trend in bond prices. The process then receives the inputs specified by the user, in this case, measure data and time data for a specific multi-dimensional storage structure (Block  303 ). In the bond price trend example, the measure would be selected from the available parameters as ‘bond prices’ and the time data selected as ‘Monday.’ In some embodiments, the identified input data is retrieved as an object, block or set of data. The specific data required for the pattern is then retrieved from this data (Block  305 ). In the trend pattern, the current and previous measure values are identified. The current and previous measure values are then compared to determine whether they indicate a positive or negative trend (Block  307 ). This information is then inserted or organized into a trend format that is associated with the trend pattern and output to a display to be viewed by a user (Block  309 ). In the trend pattern format example, the output could be “Bond prices rose on Monday.” The result data can also be stored or otherwise output for the user. 
         [0031]      FIG. 3B  is a flowchart of one embodiment of a pattern for volume analysis. In the example pattern, a volume pattern is initiated by the selection of the specific volume pattern by a user (Block  311 ). A volume pattern can be selected by a user based on the user&#39;s intent identifier. For example, a volume pattern may be selected to calculate a Dow Jones industrial average volume. The process then receives the inputs specified by the user, in this case, measure data and time data for a specific multi-dimensional storage structure (Block  313 ). In the Dow Jones volume example, the measure would be selected from the available parameters as ‘Dow Jones industrial average’ and the time data selected as ‘today.’ In some embodiments, the identified input data is retrieved as an object, block or set of data. The specific data required for the pattern is then retrieved from this data (Block  315 ). In the volume pattern, the current and previous measure values are identified. The current and previous measure values are then used to determine the difference and percent of change between the current and previous measure values (Block  317 ). This information is then inserted or organized into a volume format that is associated with the volume pattern and output to a display to be viewed by a user (Block  319 ). In the volume pattern format example, the output could be “the Dow Jones Industrial average fell 15.87, or 0.2 percent to 8,539.73.’ The result data can also be stored or otherwise output for the user. 
         [0032]      FIG. 3C  is a flowchart of one embodiment of a pattern for count analysis. In the example pattern, a count pattern is initiated by the selection of the specific count pattern by a user (Block  321 ). A count pattern can be selected by a user based on the user&#39;s intent identifier. For example, a count pattern may be selected to calculate a number of stocks that rose on the New York Stock Exchange for a given time period. The process then receives the inputs specified by the user, in this case, dimension data and count type data for a specific multi-dimensional storage structure (Block  323 ). In the New York Stock Exchange count example, the dimension would be selected from the available parameters as ‘New York Stock Exchange’ and the count type data selected as ‘stock performance.’ In some embodiments, the identified input data is retrieved as an object, block or set of data. The specific data required for the pattern is then retrieved from this data (Block  325 ). In the count pattern, the dimension members are identified. The dimension members are then used to determine the counts for each dimension member (Block  327 ). This information is then inserted or organized into a count format that is associated with the count pattern and output to a display to be viewed by a user (Block  329 ). In the count pattern format example, the output could be “Three stock rose for every two that fell on the New York Stock Exchange.” The result data can also be stored or otherwise output for the user. 
         [0033]      FIG. 3D  is a flowchart of one embodiment of a pattern for benchmark analysis. In the example pattern, a benchmark pattern is initiated by the selection of the specific benchmark pattern by a user (Block  331 ). A benchmark pattern can be selected by a user based on the user&#39;s intent identifier. For example, a benchmark pattern may be selected to determine the historical context of the status of major market indices for a given time period. The process then receives the inputs specified by the user, in this case, dimension data and benchmark type data for a specific multi-dimensional storage structure (Block  333 ). In the major indices benchmark example, the dimension would be selected from the available parameters as ‘major market indices’ and the benchmark type data selected as ‘first down stock performance.’ In some embodiments, the identified input data is retrieved as an object, block or set of data. The specific data required for the pattern is then retrieved from this data (Block  335 ). In the benchmark pattern, the dimension members are identified. The dimension members are then used to determine the benchmarks for each dimension member (Block  337 ). This information is then inserted or organized into a benchmark format that is associated with the benchmark pattern and output to a display to be viewed by a user (Block  339 ). In the bench pattern format example, the output could be “All major indices closed the week down for the first time since the week of May 11.” The result data can also be stored or otherwise output for the user. 
         [0034]      FIG. 3E  is a flowchart of one embodiment of a pattern for comparison analysis. In the example pattern, a comparison pattern is initiated by the selection of the specific comparison pattern by a user (Block  341 ). A comparison pattern can be selected by a user based on the user&#39;s intent identifier. For example, a comparison pattern may be selected to compare the performance of two stocks for a given time period. The process then receives the inputs specified by the user, in this case, dimension data and comparison type data for a specific multi-dimensional storage structure (Block  343 ). In the stock performance comparison example, the dimension would be selected from the available parameters as ‘tech companies’ and the comparison type data selected as ‘stock performance.’ In some embodiments, the identified input data is retrieved as an object, block or set of data. The specific data required for the pattern is then retrieved from this data (Block  345 ). In the comparison pattern, the dimension members are identified. The dimension members are then used to determine the comparison of each dimension member (Block  347 ). This information is then inserted or organized into a comparison format that is associated with the comparison pattern and output to a display to be viewed by a user (Block  349 ). In the comparison pattern format example, the output could be “Apple shares added $3.60, or 2.7 percent to $139.48 while rival smart phone maker Palm, Inc. jumped more than 6 percent, rising 87 cents to $13.93.” The result data can also be stored or otherwise output for the user. 
         [0035]      FIG. 4A  is a diagram of one embodiment of a menu driven user interface for the pattern analysis system. In the example user interface, an initial set of menus  401  is provided. In the example, drop down menus are present. In other embodiments, other types of menus and similar user interface mechanism are utilized. The first menu  401  is tied to the pattern selection. It is displayed to the user as a set of possible patterns. The description of the patterns is in the form of a question or similar representation of user intent. For example, a trend pattern can be presented as “Trend—What&#39;s the trend of.” 
         [0036]    After a pattern has been selected that most closely matches the user intent, then a second menu  403 A is made active. The second menu  403 A displays a list of possible parameters for the selected pattern. Any number of input selection menus  403 A,  403 B or similar user interface mechanisms can be utilized to allow a user to be selected from the available parameters. The number of inputs and the range of parameters are defined in the selected pattern. 
         [0037]    Once the pattern and parameters have been selected the user interface is automatically updated to display the formatted result. The pattern engine executes the pattern based on the currently selected set of parameters. A user can dynamically change the patterns and parameters to automatically obtain results based on these changes. 
         [0038]      FIG. 4B  is a diagram of one embodiment of a text-based interface for pattern analysis. In this embodiment, the user is allowed to input their intended question or query as text through a text input field  453 . The user interface is automatically updated to provide a pattern matching window  451  with all defined user intention identifiers that match or partially match the input text. At any point, the user can select an option from the pattern matching window  451 . The user can continue to type and define their interest to further narrow the options that are provided in the pattern matching window  451 . 
         [0039]    Once a pattern has been selected from the pattern matching window  451  or by typing in the text field  453  the pattern matching window displays parameter matching options  455 . A user can select a parameter matching option at any time or can continue to type and narrow the range of the options until a set of parameters is selected through the window or a single option remains in the window. 
         [0040]    Once the pattern and input parameters have been selected a result is automatically generated and displayed  457  by the pattern engine. The generated results can be dynamically updated in response to a user altering the input parameter selection or pattern selection through the alteration of the text field  453 . Thus, the user is able to obtained desired result information without any specific knowledge of the syntax or semantics of a query language and/or without any knowledge of the multi-dimensional storage structure in which available data is stored. 
         [0041]      FIG. 5  is a flowchart of one embodiment of a process for pattern design. In one embodiment, the pattern design process can be initiated by a user by selection of the pattern designer or through the patter services module. The pattern designer and/or patter services module in combination with the user interface layer generate a user interface for designing patterns (Block  501 ). The user interface can utilize menus, text fields, button, frames and similar user interface elements to provide the user with a set of tools for defining new patterns to be added to the system. 
         [0042]    In one embodiment, the pattern designer provides a guided interface for generating a new patter. The pattern designer first prompts and provides an interface for defining a set of parameters for a new pattern through the input editor (Block  503 ). The input editor can have an integrated user interface with the overall pattern designer or can have a separate screen or window to enable a user to define the set of parameters to associate with a pattern. The input editor can restrict the set of parameters present to those available in accessible multi-dimensional storage structures or those that have a relationship in these structures to those parameters that have already been defined. 
         [0043]    The input information received through the input editor includes a name of an associated pattern, a user intent identifier, a set of parameters and an associated report identifier (block  505 ). The received data can be stored as a part of the pattern and managed by the model administration or can be similarly stored. After the input data has been received or defined, then the pattern designer can advance to the report creation stage. 
         [0044]    The report creator in combination with the pattern designer, user interface layer and/or pattern services module generates a user interface to enable the user to define a report to be associated with a new pattern (Block  507 ). In another embodiment, the report creator can also present existing reports that can be modified or associated as-is with the new pattern. The report creator can have an interface that is integrated with the pattern designer or a separate screen or window. The report creator receives a report name, report sequence, result definition, and output format indicator (Block  509 ). The report sequence specifies a set of functions, calculations or similar actions that are to be performed on the specified parameters and related data. After the report data has been received or defined the output formatting must be specified. 
         [0045]    The output formatter in combination with the pattern designer, user interface layer and/or pattern services module generates a user interface to enable the user to define a report format to be associated with a new pattern (Block  511 ). In another embodiment, the output formatter can also present existing templates that can be modified or associated as-is with the new pattern. The output formatter can have an interface that is integrated with the pattern designer or a separate screen or window. The output formatter receives a output name, result value identifier and output template indicator. After the output format data has been received or defined the pattern is saved and added to the model repository of available patterns (Block  513 ). The set of available patterns can be managed by the model administration layer or similar component of the system. 
         [0046]    In one embodiment, the pattern analysis system can be implemented as a set of hardware devices. In another embodiment, the system components are implemented in software (for example microcode, assembly language or higher level languages). These software implementations can be stored on a computer-readable medium. A “computer-readable” medium can include any medium that can store information. Examples of the computer-readable medium include a read only memory (ROM), a floppy diskette, a CD Rom, a DVD, a flash memory, a hard drive, an optical disc or similar medium. 
         [0047]    In the foregoing specification, the invention has been described with references to specific embodiments. It will, however, be evident that various modifications and changes can be made thereto without departing from the broader spirit and scope that is set forth in the appended claims. The specification and drawings are accordingly to be regarded in illustrative rather than a restrictive sense.