Generate multidimensional database queries

Through the mapping technology of natural language processing and dictionary data structures, multi-dimensional database queries are generated, which solves the problem of high technical knowledge and query complexity of users in existing systems, and achieves more accurate and user-friendly query results.

CN110928958BActive Publication Date: 2024-12-27ORACLE INT CORP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN201910875027.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-04-25
Filing Date
2019-09-17
Publication Date
2024-12-27
Estimated Expiration
2039-09-17

AI Technical Summary

Technical Problem

The existing multidimensional database query system requires users to have high technical knowledge and database structure understanding, and manual queries are complex and wizard tools limit users' ability to construct precise queries.

Method used

Natural language processing technology is used to extract text from natural language queries provided by users, and search through the dictionary data structure associated with the multidimensional database to determine the mapping between the query and the database dimensions and members, and generate a multidimensional database query that meets the user's intentions.

Benefits of technology

It lowers the technical threshold for users to query multidimensional databases, generates more accurate and in line with user intentions, and reduces the need to understand database dimensions and implementation details.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN110928958B_ABST
    Figure CN110928958B_ABST
Patent Text Reader

Abstract

The present invention relates to generating multidimensional database queries. A technique for generating multidimensional database queries is disclosed. A system receives a natural language query supplied by a user and performs natural language processing to extract text from the natural language query. The system performs a search of the text in one or more dictionary data structures associated with the multidimensional database to determine that the text is associated with a specific dimension of multiple dimensions in the multidimensional database. The system performs a search of the text and the dimension in one or more dictionary data structures to determine that the text is associated with a specific member of the dimension. The system generates a multidimensional database query to satisfy the natural language query supplied by the user. The multidimensional database query includes a query clause that references a specific member of the dimension.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CLAIMS; RELATED APPLICATIONS; INCORPORATION BY REFERENCE

[0002] This application claims the benefit of U.S. Provisional Patent Application No. 62 / 733,913, filed September 20, 2018, which is incorporated herein by reference.

[0003] Applicant hereby rescinds any statements of claim scope in the parent application(s) or its filing history, and puts the USPTO on notice that the claims in the present application may be broader than any claims in the parent application(s). Technical Field

[0004] The present disclosure relates to multidimensional databases. In particular, the present disclosure relates to multidimensional database queries. Background Art

[0005] In a computer system, a relational database stores data in a data structure called a table. Each table contains one or more rows and columns. A row in a table represents a specific record, where the data for that record is stored in the corresponding (one or more) columns. Records in one table can reference records in another table (i.e., are related to records in another table) using proprietary and foreign keys. To access data in a relational database, a user prepares a query in a query language such as Structured Query Language (SQL). As the number of related tables increases, the complexity of relational database queries increases significantly.

[0006] In a multidimensional database ("MDDB"), data is represented as a hypercube or multidimensional array. A hypercube has multiple dimensions. Each dimension corresponds to a different index of the data. As an example, an MDDB stores employee data. In this example, the different dimensions may include "employee," "department," and "salary." The different dimensions can be visualized as axes of the cube. An MDDB can have any number of dimensions. Specific data values ​​within an MDDB can be referred to as members.

[0007] An MDDB query is a collection of instructions, conforming to a specific query format specified by the MDDB, for retrieving data from the MDDB. When applied to an MDDB, an MDDB query filters data across one or more dimensions of the MDDB. Using the example above, an MDDB query may retrieve data corresponding to: all employees in a department, all employees earning a salary within a specific salary range, total employee salary expenditures within a specific department, all departments with employees earning above a specific salary, etc. MDDB allows for complex queries that are difficult or impossible to express in queries against relational databases.

[0008] In order to prepare MDDB queries, users can write queries manually. Manually writing MDDB queries requires users to have considerable knowledge of the underlying technology and database structure, including query language syntax and different dimensions stored in the database. Alternatively, users can access a user interface that provides a predetermined set of options for constructing MDDB queries. The user interface may include check boxes, drop-down menus, and / or other controls that allow users to select from available data sets, filters, etc. The user interface with a predetermined set of options may be referred to as a "wizard". Although the wizard can help build the process of generating MDDB queries, users still need knowledge of the underlying technology and database structure to use the wizard. For example, the user must understand the concept of MDDB dimensions to prepare queries that access (one or more) the correct dimensions. In addition, since the wizard presents a predetermined set of options, the wizard may not allow the user to construct the desired precise query.

[0009] The approaches described in this section are approaches that could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section. Summary of the invention

[0010] According to an embodiment of the present disclosure, a method for generating a multidimensional database query according to a natural language query provided by a user is provided, comprising: performing natural language processing to extract a first user-supplied text from the natural language query provided by the user; performing a first lookup of the first user-supplied text in one or more dictionary data structures associated with the multidimensional database to determine that the first user-supplied text is associated with a first dimension among multiple dimensions in the multidimensional database based on a first mapping in the one or more dictionary data structures, wherein the first mapping maps the first dimension to a first set of one or more texts, each text being associated with at least one member of the first dimension; performing a second lookup of the first user-supplied text and the first dimension in the one or more dictionary data structures to determine that the first user-supplied text is associated with a first specific member of the first dimension based on a second mapping in the one or more dictionary data structures, wherein the second mapping maps each specific text in the first set of one or more texts to one or more specific members of the first dimension associated with the specific text in the first set of one or more texts; and generating a multidimensional database query to satisfy the natural language query provided by the user, wherein generating the multidimensional database query comprises generating a first query clause referencing the first specific member of the first dimension, wherein the method is performed by at least one device including a hardware processor.

[0011] Various embodiments are described herein, including methods, systems, non-transitory machine-readable media storing programs, codes or instructions executable by one or more processors, etc. These illustrative embodiments are not mentioned to limit or define the present disclosure, but to provide examples to aid understanding of the present disclosure. BRIEF DESCRIPTION OF THE DRAWINGS

[0012] In the figures of the accompanying drawings, embodiments are shown by way of example and not by way of limitation. It should be noted that references to "one" or "an" embodiment in the present disclosure do not necessarily refer to the same embodiment, and they mean at least one embodiment. In the drawings:

[0013] Figure 1 shows a block diagram illustrating a system according to one or more embodiments;

[0014] Figure 2A-2B illustrates a set of operations for generating a dictionary data structure according to one or more embodiments;

[0015] Figures 3A-3C illustrates a set of operations for generating a multidimensional database query according to one or more embodiments;

[0016] Figures 4A-4K shows a block diagram illustrating an example of generating a multidimensional database query according to one or more embodiments; and

[0017] Figure 5 A block diagram illustrating a computer system in accordance with one or more embodiments is shown. DETAILED DESCRIPTION

[0018] In the following description, for the purpose of explanation, many specific details are set forth in order to provide a thorough understanding. One or more embodiments may be practiced without these specific details. Features described in one embodiment may be combined with features described in different embodiments. In some examples, well-known structures and devices are described with reference to block diagrams to avoid unnecessarily obscuring the present invention.

[0019] 1. General Overview

[0020] 2. System Architecture Overview

[0021] 3. Generate dictionary data structure

[0022] 4. Generate multidimensional database queries

[0023] 5. Illustrative Examples

[0024] 6. Other Matters; Extension

[0025] 7. Hardware Overview

[0026] 8. Computer Networks and Cloud Networks

[0027] 9. Microservice Applications

[0028] 1. General Overview

[0029] A multidimensional database query filters data across one or more indexes (referred to herein as dimensions) into a multidimensional database. One or more embodiments relate to generating a multidimensional database query based on a user-supplied natural language query and a dictionary data structure. The user-supplied natural language query includes a literal that can be used to perform a search across a dictionary data structure. The dictionary data structure maps such user-supplied literals associated with at least one member of a dimension to the dimension. The dictionary data structure further maps a combination of (a) user-supplied literals and (b) specified dimensions to members of the specified dimension. The system combines members from different dimensions to generate a multidimensional database query.

[0030] In an embodiment, natural language processing allows the system to determine non-trivial words supplied by the user and perform a lookup in a dictionary data structure to determine which members are relevant to the natural language query. The dictionary data structure may also include importance scores associated with the word-to-member mappings. The importance scores may allow the system to generate multidimensional database queries that return more relevant results than if the importance scores were not used.

[0031] One or more embodiments described in the specification and / or recited in the claims may not be included in this general summary.

[0032] 2. System Architecture Overview

[0033] Figure 1 1 is a block diagram illustrating a system 100 according to one or more embodiments. Figure 1 As shown, the system 100 includes a user interface 102, a reporting engine 104, a multidimensional database 114, and various components thereof. In one or more embodiments, the system 100 may include Figure 1 More or fewer components may be used than shown. Figure 1 The components shown in can be local to each other or remote from each other. Figure 1 The components shown in can be implemented with software and / or hardware. Each component can be distributed on multiple applications and / or machines. Multiple components can be combined into one application and / or machine. The operations described with respect to one component can be performed by another component instead. Other embodiments and / or examples related to computer networks are described below.

[0034] In one or more embodiments, user interface 102 refers to hardware and / or software configured to facilitate communication between a user and reporting engine 104. User interface 102 presents user interface elements and receives input via user interface elements. Examples of user interface 102 include, but are not limited to: a graphical user interface (GUI); a command line interface (CLI); a tactile interface; and / or a voice command interface. Examples of user interface elements include, but are not limited to: a check box; a radio button; a drop-down list; a list box; a button; a toggle; a text field; a date and time selector; a command line; a slider; a page; and / or a form. In an embodiment, user interface 102 includes one or more user interface elements that allow a user to submit a natural language query to reporting engine 104. For example, user interface 102 may include a text box configured to receive a natural language query as input.

[0035] In an embodiment, different components of the user interface 102 are specified in different languages. The behavior of the user interface elements may be specified in a dynamic programming language such as JavaScript. The content of the user interface elements may be specified in a markup language such as Hypertext Markup Language (HTML) or XML User Interface Language (XUL). The layout of the user interface elements may be specified in a style sheet language such as Cascading Style Sheets (CSS). Alternatively, the components of the user interface 102 may be specified in one or more other languages ​​such as Java, C, or C++.

[0036] In an embodiment, reporting engine 104 refers to hardware and / or software configured to perform the operations described herein for generating a multidimensional database ("MDDB") query. Examples of operations for generating an MDDB query are described below. Specifically, in an embodiment, reporting engine 104 is configured to receive a natural language query supplied by a user via user interface 102 and generate an MDDB query based on the natural language query supplied by the user.

[0037] In an embodiment, the reporting engine 104 includes a natural language processor 106 configured to extract one or more literals from a natural language query supplied by a user. The reporting engine 104 performs one or more lookups of the user supplied literals in one or more dictionary data structures 108. The dictionary data structures 108 include mappings 110, 112 that associate non-trivial literals with dimensions and / or members of a multidimensional database 114. The dictionary data structures 108 may be stored as extensible markup language (XML), JavaScript object notation (JSON), an object in an object-oriented programming language, a record or member in a database, or any other kind of data structure or combination thereof.

[0038] In an embodiment, the dictionary data structure 108 includes a dimension description dictionary. The dimension description dictionary maps each dimension in the multidimensional database 114 to a list of non-trivial literals associated with members of the dimension. An example of a dimension description dictionary is described below.

[0039] In an embodiment, the dictionary data structure 108 includes a dimension member dictionary. For non-trivial literals associated with one or more dimensions in the multidimensional database 114, the dimension member dictionary maps each specific literal to a specific member associated with the literal (e.g., a member having the literal in its name, alias, and / or user-defined attribute). In addition, for each literal-to-member mapping, the dimension member dictionary may include a corresponding importance score. An example of a dimension member dictionary is described below.

[0040] In an embodiment, the dimension description dictionary and the dimension member dictionary are stored as separate data structures. Alternatively, the dimension description dictionary and the dimension member dictionary can be stored as a single data structure. For example, referring to the examples shown in Appendix A and Appendix B herein, the XML of Appendix A can be modified to include the text-to-member mapping of Appendix B. Many different kinds and / or configurations of dictionary data structures 108 can be used.

[0041] In an embodiment, based on the results of the lookup of the dictionary data structure 108, the reporting engine 104 generates an MDDB query. In an embodiment, the reporting engine 104 applies the MDDB query to the multidimensional database 114 to obtain the results of the natural language query supplied by the user. The reporting engine 104 can generate a visual report based on the results. The reporting engine 104 can present the visual report to the user via the user interface 102.

[0042] In an embodiment, multidimensional database ("MDDB") 114 is any type of multidimensional database. Examples of multidimensional databases include, but are not limited to: Oracle Essbase TM , IBM Cognos TM TM1, SAP BusinessWarehouse (BW) TM) and Microsoft Analysis Services TM MDDB 114 may include multiple different storage units and / or devices. The multiple different storage units and / or devices may be of the same type or located at the same physical site, or may not be of the same type or located at the same physical site. In addition, MDDB 114 may be located at the same physical site as the storage unit 114. Figure 1 114 may be implemented or executed on the same computing system as one or more other components shown in FIG. Figure 1MDDB 114 may be implemented or executed on a separate computing system from one or more of the other components shown in FIG. MDDB 114 may be communicatively coupled to the Figure 1 , or one or more other components shown in (e.g., reporting engine 104).

[0043] In an embodiment, Figure 1 The components shown in are implemented on one or more digital devices. The term "digital device" generally refers to any hardware device including a processor. A digital device may refer to a physical device that executes an application or a virtual machine. Examples of digital devices include computers, tablet computers, laptops, desktops, netbooks, servers, web servers, network policy servers, proxy servers, general machines, special function hardware devices, hardware routers, hardware switches, hardware firewalls, hardware firewalls, hardware network address translators (NATs), hardware load balancers, mainframes, televisions, content receivers, set-top boxes, printers, mobile phones, smart phones, personal digital assistants ("PDAs"), wireless receivers and / or transmitters, base stations, communication management equipment, routers, switches, controllers, access points, and / or client devices.

[0044] 3. Generate dictionary data structure

[0045] Figure 2A-2B An example set of operations for generating a dictionary data structure according to one or more embodiments is illustrated. Figure 2A-2B Therefore, Figure 2A-2B The particular sequence of operations shown in the drawings should not be construed as limiting the scope of one or more embodiments.

[0046] In an embodiment, a system (e.g., Figure 1 The system 100 generates one or more dictionary data structures (e.g., Figure 1 The system can generate a dictionary data structure by scanning an MDDB outline and building a dictionary data structure based on the MDDB outline. If the MDDB outline is a tree structure, the system can use a depth-first or breadth-first scan. The dictionary data structure is configured to allow a lookup to determine which member(s) of which dimension(s) include one or more specific words. The dictionary data structure can include a dimension description dictionary and / or a dimension member dictionary, as described below.

[0047] In an embodiment, the system generates a dimension description dictionary (operation 202). The dimension description dictionary maps each dimension in the MDDB to a non-trivial list of literals associated with members of the dimension. Appendix A, which is incorporated herein by reference in its entirety, shows an example of a dimension description dictionary according to an embodiment.

[0048] In an embodiment, to generate a dimension description dictionary, the system obtains metadata associated with each member in the dimension (operation 202A). The metadata may include, but is not limited to: the name of the member; the alias of the member; and / or any user-defined attributes associated with the member. The system may perform natural language processing on the metadata (operation 202B). For each word in the metadata, the natural language processing may involve generating a corresponding token, part of speech, lemma (i.e., a stemmed token). Based on the natural language processing, the system may determine whether a particular word is a trivial word (operation 202C). For example, the system may determine that a word corresponding to a particular part of speech (such as a conjunction and / or a preposition) is a trivial word. Alternatively or additionally, the system may determine that the word is a trivial word because it does not have sufficient contextual meaning. If the system determines that the word is not a trivial word, the system may retain the non-trivial word for the dimension description dictionary. The system may map the word in the dimension description dictionary to a corresponding dimension associated with the word (operation 202D). If the system determines that the word is a trivial word, the system may filter out the trivial word (operation 202E). The system may determine whether the metadata includes additional text (operation 202F) and repeat the filtering process for each text until all text are evaluated as either trivial or non-trivial.

[0049] In an embodiment, the system generates a dimension description dictionary according to the following pseudo code.

[0050]

[0051] In an embodiment, the system generates a dimension member dictionary (operation 204). For non-trivial literals associated with each dimension, the dimension member dictionary maps each specific literal to a specific member(s) associated with the literal (e.g., a member(s) having the literal in its name, alias, and / or user-defined attribute). In addition, for each literal-to-member mapping, the dimension member dictionary may include a corresponding importance score. The importance scores are discussed in further detail below. Appendix B, which is incorporated herein by reference in its entirety, shows an example of a dimension member dictionary according to an embodiment.

[0052] In an embodiment, to generate a dimension member dictionary, the system obtains metadata associated with each member in the dimension (operation 204A). The metadata may include, but is not limited to: the name of the member; an alias of the member; and / or any user-defined attributes associated with the member. The system may perform natural language processing on the metadata (operation 204B). For each word in the metadata, the natural language processing may involve generating corresponding tokens, parts of speech, and word-grams (i.e., stemmed tokens). Based on the natural language processing, the system may determine whether a particular word is a trivial word (operation 204C). For example, the system may determine that a word corresponding to a particular part of speech (such as a conjunction and / or a preposition) is a trivial word. Alternatively or additionally, the system may determine that the word is a trivial word because it does not have sufficient contextual meaning. If the system determines that the word is not a trivial word, the system may retain the non-trivial word for the dimension member dictionary. Specifically, the system may map the word in the dimension member dictionary to a corresponding member associated with the word (operation 204D).

[0053] In an embodiment, for each retained text-to-member mapping, the system generates a corresponding importance score (operation 204E). The importance score is a measure or approximation of the strength of the relationship between a particular member and a particular text. In an embodiment, given a set of non-trivial texts associated with a particular member, the importance score for a particular text is the ratio of (a) the number of times the particular text appears in the set of non-trivial texts associated with the particular member to (b) the total number of texts in the set of non-trivial texts. In the example shown in Appendix B, the importance score is the ratio of the number of occurrences of the particular text to the number of non-trivial texts in the member's description and (one or more) user-defined attributes. It should be noted that in Appendix B, only the member's description is included in the XML; the score also takes into account user-defined attributes that are not included in the XML.

[0054] In an embodiment, if the system determines that the word is a trivial word, the system filters out the trivial words (operation 204F). The system can determine whether the metadata includes other words (operation 204G) and repeat the filtering process for each word until all words are evaluated as trivial or non-trivial.

[0055] In an embodiment, the system generates a dimension member dictionary according to the following pseudo code.

[0056]

[0057] In an embodiment, one or more operations for generating a dimension description dictionary overlap with one or more operations for generating a dimension member dictionary. In the pseudo-code example above, both processes involve loading the MDDB summary into memory, iterating each member of each dimension, performing natural language processing on the metadata associated with each member, and filtering out trivial terms. To improve system performance without repeating overlapping operations, each operation can be performed once and used to generate both the dimension description dictionary and the dimension member dictionary.

[0058] 4. Generate multidimensional database queries

[0059] Figures 3A-3C An example set of operations for generating a multidimensional database query according to one or more embodiments is illustrated. Figures 3A-3C Therefore, Figures 3A-3C The particular sequence of operations shown in the drawings should not be construed as limiting the scope of one or more embodiments.

[0060] In an embodiment, a system (e.g., Figure 1 The system 100 of the present invention receives a user-supplied natural language query (operation 302). The system may receive the user-supplied natural language query via a user interface, an application programming interface (API), and / or another interface configured to receive user-supplied data, or a combination thereof. Generally speaking, the user-supplied natural language query includes user-supplied text that does not conform to any specific query language grammar defined by the MDDB for which the user-supplied natural language query is directed.

[0061] In an embodiment, the system performs natural language processing on the user-supplied natural language query (operation 304). For each word in the user-supplied natural language query, natural language processing may involve generating corresponding tags, parts of speech, and word-grams (ie, stemmed tags).

[0062] In an embodiment, based on natural language processing, the system determines whether a word in the natural language query supplied by the user is a trivial word (operation 306). For example, the system may determine that a word corresponding to a particular word class (such as a conjunction and / or a preposition) is a trivial word. Alternatively or additionally, the system may determine that the word is a trivial word because it does not have sufficient contextual meaning. If the system determines that the word is a trivial word, the system may filter out the word (operation 308), i.e., not consider the word when generating the MDDB query. The system may determine whether the natural language query supplied by the user includes other words (operation 310) and repeat the filtering process for each word until all words are evaluated as trivial or non-trivial.

[0063] In an embodiment, for an unfiltered (i.e., non-trivial) literal / token, the system performs a lookup in a dimension description dictionary to determine any matching dimensions (operation 312). If the dimension description dictionary indicates that the literal is associated with a dimension, then the dimension matches the literal. The system may determine whether any dimension(s) match the literal (operation 314). If the literal matches one or more dimensions in the MDDB, the system performs a lookup in a dimension member dictionary to determine the specific member(s) of the dimension(s) associated with the specific literal (operation 316).

[0064] In an embodiment, two or more members in the MDDB have a parent-child relationship, where the data associated with the parent member includes the data associated with the child member. For example, in a database storing accounting data, numbers in child members can be "rolled up" to the parent member. To avoid multiple count values, the system can determine whether any member associated with a particular word has a parent-child relationship (operation 318), and if so, filter out the child members (operation 320).

[0065] In an embodiment, the system compares the importance scores of the members that match the text and selects the member(s) with the highest score (operation 322). The member(s) with the highest score are the members that meet one or more threshold criteria. The system can select a single member with the highest importance score among all matching members. Alternatively or additionally, the system can select any member(s) with an importance score that matches or exceeds a threshold. Many different criteria can be used to determine the member(s) with the highest score that matches a particular text.

[0066] In an embodiment, the system determines whether the user-supplied natural language query includes other non-trivial words (operation 324), and if so, repeats the lookup process for the word. The system can repeat the lookup process for each non-trivial word in the user-supplied natural language query.

[0067] In an embodiment, the system generates a multidimensional database query using the highest scoring member(s) identified for each word (operation 326). The format of the MDDB query satisfies the query grammar defined by the underlying MDDB. The MDDB query includes one or more clauses that reference the one or more highest scoring members for each word.

[0068] In an embodiment, the system generates a multidimensional database query according to the following pseudo code:

[0069]

[0070] In an embodiment, the system applies an MDDB query to the MDDB (operation 328). In response to the MDDB query, the MDDB supplies (and the system receives) one or more result sets that satisfy the natural language query supplied by the user (operation 330). According to the MDDB query, the one or more result sets include data describing one or more members of a dimension in the MDDB.

[0071] In an embodiment, the system generates a visual report that visually represents one or more results of the MDDB query (operation 332). The visual report may include a visual representation of report attributes that display one or more attributes or properties of the visual report. The report attributes may be user configurable. Specifically, the system may detect user input to configure the report attributes (operation 334). In response to detecting the user input, the system may filter the results obtained from the MDDB and modify the data displayed in the visual report accordingly (operation 336). Alternatively, the system may generate a new MDDB query modified according to the change in the report attributes. The system may apply the new MDDB query to the MDDB to obtain one or more new results to be displayed in the visual report (operation 338).

[0072] In an embodiment, generating a multidimensional database query based on a natural language query supplied by a user reduces the amount of knowledge required for a user to query the MDDB. The user does not need to know the grammar required to write an MDDB query. In addition, the natural language query supplied by the user is not constrained by the options presented in the wizard. Therefore, the resulting MDDB query can provide better results (i.e., results that better meet the user's intention to write a natural language query) than when the user is constrained by the available options in the wizard. In addition, when the system uses one or more dictionary data structures to match user-supplied text with MDDB dimensions and members, the user can query the MDDB without having to understand the dimensions and / or other implementation details of the MDDB.

[0073] 5. Illustrative Examples

[0074] For the purpose of clarity, a detailed example is described below. Specifically, Figures 4A-4K A block diagram illustrating an example of generating an MDDB query according to one or more embodiments is shown. The components and / or operations described below should be understood as a specific example that may not be applicable to certain embodiments. Therefore, the components and / or operations described below should not be interpreted as limiting the scope of any claim.

[0075] Figure 4A The diagram illustrates the underlying MDDB (e.g., Figure 1114). The summary view 402 is a visual representation of the MDDB summary. The summary view 402 can be displayed on a graphical user interface (e.g., Figure 1 The MDDB schema is a data structure (eg, a tree structure) that represents the relationships between dimensions and members in the underlying MDDB. Figure 4A The summary view 402 shown in the MDDB summary allows the user to visualize and navigate different parts of the MDDB summary. For example, the user can use the [+] and [-] user interface elements to expand and collapse the branches of the summary view 402. As shown in the summary view 402, the MDDB in this example includes multiple dimensions, named "Ledger", "Company", "Cost Center", etc. In addition, the summary view 402 shows that the MDDB summary includes various metadata associated with each specific dimension, such as aliases and information about whether hierarchies are enabled for the dimension. The hierarchy indicates the related levels and members within the MDDB summary. A given level may include one or more members corresponding to a data value. Alternatively or additionally, members can be arranged in a parent-child hierarchy, where one member ("parent") is above another member ("child") in the hierarchy. In the summary view 402 of this example, the "account" dimension and the "all VF accounts" child have been expanded to display members "5100", "5200", and "99999".

[0076] Figure 4B An example of a user-supplied natural language query 404 according to an embodiment is illustrated. In this example, the user-supplied natural language query 404 is in the form of a question: "How much do I spend on travel and entertainment in the United States?" Alternatively, the user-supplied natural language query 404 can take the form of a command (e.g., "Find my travel and entertainment expenses in the United States") or a sentence fragment (e.g., "Travel and entertainment expenses in the United States").

[0077] Figure 4C An example of a processed natural language query 406 is shown, which corresponds to a query Figure 4B The result of performing natural language processing on a user-supplied natural language query. Figure 4C , the word "is" has been filtered out as a trivial word (i.e., a word that does not have sufficient contextual meaning).

[0078] Figure 4D Illustrated is an example of filtered word-grams 408, which are non-trivial word-grams remaining after filtering out trivial text based on the processed natural language query 406. In this example, only word-grams corresponding to nouns are retained (i.e., spending, travel, entertainment, and USA).

[0079] Figure 4E The diagram shows the lookup in the dimension description dictionary for Figure 4D 408. In this example, no matching dimension is found for the word "expenses". The dimension "account" (which has an account type of "expenses" based on the user-defined attribute associated with the dimension) matches the words "travel" and "entertainment". The dimension "location", which does not have an account type, matches the word "United States".

[0080] Figure 4F The diagram illustrates a set of matching members 412 for the word "travel" based on a lookup in a dimension member dictionary that includes an importance score associated with each word-to-member mapping. In the set of matching members 412 for the word "travel", members 53450, 53440, 53456, and 53430 are all child members of member 53000. After filtering out the child members, the parent member set 414 for the word "travel" includes only member 53000.

[0081] Figure 4G The matching member set 416 for the word "entertainment" is illustrated. In this example, member 52388 is a child member of member 53000. After filtering out the child members, the parent member set 418 for the word "entertainment" includes only member 53000.

[0082] Figure 4H The matching member set 420 for the word "United States" is illustrated. In this example, member 1000 and member 2000 do not have a parent-child relationship. In the matching member set 420, both members can be considered as parent members without any child members. The parent member set 422 for the word "United States" retains both member 1000 and member 2000.

[0083] Fig. 4I Shows the Figure 4F , Figure 4G and Figure 4H 4, for each word, the highest scoring member set 424. In this example, for the word "location", member 1000 and member 2000 have the same importance score. If two members have matching importance scores, both can be considered the highest scoring members.

[0084] Figure 4J The diagram shows a multidimensional database query 426 in a multidimensional expression (MDX) format based on the highest scoring member for each word in this example. Figures 4A-4I, MDDB query 426 is an MDX query designed to return the Figure 4A Results of a user-supplied natural language query 404 .

[0085] Figure 4K The diagram shows the application Figure 4J An example of a visual report 428 of the results of an MDDB query 426. Figure 4K In the report properties 430 of the visual report 428, the user can configure the visual report 428 to display data for North America, South America, or both. When the user configures the report properties 430, the system can filter the results obtained from the MDDB and modify the data displayed in the visual report accordingly. Alternatively, the system can generate a new MDDB query that is modified according to the changes in the report properties 430. The system can apply the new MDDB query to the MDDB to obtain one or more new results to be displayed in the visual report 428.

[0086] 6. Other Matters; Extension

[0087] Embodiments are directed to a system having one or more devices including a hardware processor and configured to perform any of the operations described herein and / or in any of the following appended claims.

[0088] In an embodiment, a non-transitory computer-readable storage medium comprises instructions that, when executed by one or more hardware processors, cause performance of any of the operations described herein and / or recited in any claim.

[0089] According to one or more embodiments, any combination of the features and functions described herein may be used. In the foregoing description, embodiments of the present invention have been described with reference to many specific details, which may vary from one embodiment to another. Therefore, the description and drawings should be viewed in an illustrative rather than a restrictive sense. The only and exclusive indication of the scope of the present invention and what the applicant intends to be the scope of the present invention is the literal and equivalent scope of the resulting claims in the specific form of a set of claims generated by this application, including any subsequent corrections.

[0090] 7. Hardware Overview

[0091] According to one embodiment, the technology described herein is implemented by one or more special-purpose computing devices (i.e., computing devices specifically configured to perform certain functions). The special-purpose computing device can be hard-wired to perform the present technology, or can include a digital electronic device that is permanently programmed to perform the present technology, such as one or more application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or network processing units (NPUs), or can include one or more general-purpose hardware processors that are programmed to perform the present technology according to program instructions in firmware, memory, other storage devices, or combinations. Such a special-purpose computing device can also combine custom hard-wired logic, ASICs, FPGAs, or NPUs with custom programming to implement the present technology. The special-purpose computing device can be a desktop computer system, a portable computer system, a handheld device, a networking device, or any other device that combines hard-wiring and / or program logic to implement the technology.

[0092] For example, Figure 5 5 is a block diagram illustrating a computer system 500 upon which embodiments of the present invention may be implemented. Computer system 500 includes a bus 502 or other communication mechanism for communicating information and a hardware processor 504 coupled with bus 502 for processing information. Hardware processor 504 may be, for example, a general purpose microprocessor.

[0093] Computer system 500 also includes a main memory 506, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 502 for storing information and instructions to be executed by processor 504. Main memory 506 may also be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 504. Such instructions, when stored in a non-transitory storage medium accessible to processor 504, render computer system 500 a special-purpose machine customized to perform the operations specified in the instructions.

[0094] Computer system 500 also includes a read only memory (ROM) 508 or other static storage device coupled to bus 502 for storing static information and instructions for processor 504. A storage device 510, such as a magnetic or optical disk, is provided and coupled to bus 502 for storing information and instructions.

[0095] The computer system 500 may be coupled to a display 512 via the bus 502, such as a liquid crystal display (LCD), a plasma display, an electronic ink display, a cathode ray tube (CRT) monitor, or any other type of device for displaying information to a computer user. An input device 514 including alphanumeric keys and other keys may be coupled to the bus 502 for communicating information and command selections to the processor 504. Alternatively or additionally, the computer system 500 may receive user input via a cursor control 516, such as a mouse, a trackball, a touch pad, a touch screen, or cursor direction keys, for communicating direction information and command selections to the processor 504 and for controlling movement of a cursor on the display 512. Such an input device typically has two degrees of freedom on two axes, a first axis (e.g., x) and a second axis (e.g., y) to allow the device to specify a position in a plane. The display 512 may be configured to receive user input via one or more pressure-sensitive sensors, multi-touch sensors, and / or gesture sensors. Alternatively or additionally, computer system 500 may receive user input via a microphone, a video camera, and / or some other kind of user input device (not shown).

[0096] The computer system 500 may implement the techniques described herein using custom hardwired logic, one or more ASICs or FPGAs, firmware, and / or program logic that, in combination with the computer system, makes the computer system 500 a special purpose machine or programs the computer system 500 to be a special purpose machine. According to one embodiment, the techniques herein are performed by the computer system 500 in response to the processor 504 executing one or more sequences of one or more instructions contained in the main memory 506. These instructions may be read into the main memory 506 from another storage medium, such as the storage device 510. Execution of the sequences of instructions contained in the main memory 506 causes the processor 504 to perform the process steps described herein. In alternative embodiments, hardwired circuitry may be used in place of or in combination with software instructions.

[0097] As used herein, the term "storage medium" refers to any non-transient medium storing data and / or instructions that cause a machine to operate in a particular manner. Such storage media may include non-volatile media and / or volatile media. Non-volatile media include, for example, optical disks or magnetic disks, such as storage device 510. Volatile media include dynamic memory, such as main memory 506. Common forms of storage media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, tapes or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical medium with a hole pattern, RAM, programmable read-only memory (PROM) and erasable PROM (EPROM), FLASH-EPROM, non-volatile random access memory (NVRAM), any other memory chip or cassette, content addressable memory (CAM) and ternary content addressable memory (TCAM).

[0098] Storage media are distinct from but may be used in conjunction with transmission media. Transmission media participate in the transmission of information between storage media. For example, transmission media include coaxial cables, copper wires, and optical fibers, including the wires that comprise bus 502. Transmission media may also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.

[0099] Carrying one or more sequences of one or more instructions to the processor 504 for execution may involve various forms of media. For example, the instructions may initially be carried on a disk or solid-state drive of a remote computer. The remote computer may load the instructions into its dynamic memory and send the instructions over a network via a network interface controller (NIC) (such as an Ethernet controller or a Wi-Fi controller). The NIC local to the computer system 500 may receive data from the network and place the data on the bus 502. The bus 502 carries the data to the main memory 506, from which the processor 504 retrieves and executes the instructions. The instructions received by the main memory 506 may optionally be stored on the storage device 510 before or after being executed by the processor 504.

[0100] Computer system 500 also includes a communication interface 518 coupled to bus 502. Communication interface 518 provides bidirectional data communication coupled to network link 520, wherein network link 520 is connected to local network 522. For example, communication interface 518 can be an integrated services digital network (ISDN) card, a cable modem, a satellite modem, or a modem that provides data communication connection to a telephone line of a corresponding type. As another example, communication interface 518 can be a LAN card that provides data communication connection to a compatible local area network (LAN). Wireless links can also be implemented. In any such implementation, communication interface 518 sends and receives electrical signals, electromagnetic signals, or optical signals that carry digital data streams representing various types of information.

[0101] The network link 520 typically provides data communication to other data devices through one or more networks. For example, the network link 520 can provide a connection to a host computer 524 or to data equipment operated by an Internet Service Provider (ISP) 526 through a local network 522. The ISP 526 in turn provides data communication services through the global packet data communication network now commonly referred to as the "Internet" 528. Both the local network 522 and the Internet 528 use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on the network link 520 and through the communication interface 518 are example forms of transmission media that carry the digital data to and from the computer system 500.

[0102] Computer system 500 can send messages and receive data, including program code, through the network, network link 520, and communication interface 518. In the Internet example, server 530 can transmit the requested code for an application program through Internet 528, ISP 526, local network 522, and communication interface 518.

[0103] The received code may be executed by processor 504 as it is received, and / or stored in storage device 510 or in other non-volatile storage for later execution.

[0104] 8. Computer Networks and Cloud Networks

[0105] In one or more embodiments, a computer network provides connections between a set of nodes running software utilizing the techniques described herein. The nodes may be local to each other and / or remote from each other. The nodes are connected by a set of links. Examples of links include coaxial cables, unshielded twisted pairs, copper cables, optical fibers, and virtual links.

[0106] A subset of nodes implements a computer network. Examples of such nodes include switches, routers, firewalls, and network address translators (NATs). Another subset of nodes uses a computer network. Such nodes (also referred to as "hosts") can execute client processes and / or server processes. A client process requests a computing service (such as the execution of a particular application and / or the storage of a particular amount of data). A server process responds by executing the requested service and / or returning corresponding data.

[0107] A computer network may be a physical network, comprising physical nodes connected by physical links. A physical node is any digital device. A physical node may be a function-specific hardware device, such as a hardware switch, a hardware router, a hardware firewall, and a hardware NAT. Additionally or alternatively, a physical node may be any physical resource that provides computing power to perform a task, such as a physical resource configured to execute various virtual machines and / or applications that perform corresponding functions. A physical link is a physical medium that connects two or more physical nodes. Examples of links include coaxial cables, unshielded twisted pairs, copper cables, and optical fibers.

[0108] A computer network may be an overlay network. An overlay network is a logical network implemented on another network (such as a physical network). Each node in the overlay network corresponds to a corresponding node in the underlying network. Therefore, each node in the overlay network is associated with both an overlay address (addressing the overlay node) and an underlying address (addressing the underlying node that implements the overlay node). An overlay node may be a digital device and / or a software process (such as a virtual machine, an application instance, or a thread). The link connecting the overlay nodes is implemented as a tunnel through the underlying network. The overlay nodes at either end of the tunnel treat the underlying multi-hop path between them as a single logical link. Tunnel processing is performed by encapsulation and decapsulation.

[0109] In an embodiment, the client may be local to the computer network and / or remote from the computer network. The client may access the computer network through other computer networks, such as a private network or the Internet. The client may transmit the request to the computer network using a communication protocol, such as the Hypertext Transfer Protocol (HTTP). The request is transmitted through an interface, such as a client interface, such as a web browser, a program interface, or an application programming interface (API).

[0110] In an embodiment, a computer network provides a connection between a client and a network resource. The network resource includes hardware and / or software configured to execute a server process. Examples of network resources include processors, data storage devices, virtual machines, containers, and / or software applications. Network resources are shared between multiple clients. Clients request computing services from a computer network independently of each other. Network resources are dynamically allocated to requests and / or clients on demand. The network resources allocated to each request and / or client can be expanded or reduced based on, for example, (a) computing services requested by a specific client, (b) aggregate computing services requested by a specific tenant, and / or (c) aggregate computing services requested by a computer network. Such a computer network may be referred to as a "cloud network."

[0111] In an embodiment, a service provider provides a cloud network to one or more end users. The cloud network can implement various service models, including but not limited to software as a service (SaaS), platform as a service (PaaS), and infrastructure as a service (IaaS). In SaaS, the service provider provides the end user with the ability to use the service provider's applications that are being executed on network resources. In PaaS, the service provider provides the end user with the ability to deploy custom applications on network resources. Custom applications can be created using programming languages, libraries, services, and tools supported by the service provider. In IaaS, the service provider provides the end user with the ability to supply processing, storage, network, and other basic computing resources provided by network resources. Any application, including an operating system, can be deployed on network resources.

[0112] In an embodiment, a computer network can implement various deployment models, including but not limited to private cloud, public cloud and hybrid cloud. In a private cloud, network resources are supplied to a specific group of one or more entities for exclusive use (the term "entity" as used herein refers to an enterprise, organization, individual or other entity). Network resources can be local to the premises of a specific entity group and / or away from the premises of a specific entity group. In a public cloud, cloud resources are supplied to multiple entities (also referred to as "tenants" or "customers") that are independent of each other. A computer network and its network resources are accessed by clients corresponding to different tenants. Such a computer network can be referred to as a "multi-tenant computer network". Several tenants can use the same specific network resources at different times and / or at the same time. Network resources can be local to the premises of a tenant and / or away from the premises of a tenant. In a hybrid cloud, a computer network includes a private cloud and a public cloud. The interface between a private cloud and a public cloud allows portability of data and applications. Data stored at a private cloud and data stored at a public cloud can be exchanged through an interface. Applications implemented at a private cloud and applications implemented at a public cloud may have dependencies on each other. Calls from applications at a private cloud to applications at a public cloud (and vice versa) can be performed through an interface.

[0113] In an embodiment, the tenants of a multi-tenant computer network are independent of each other. For example, one tenant may be separated from another tenant (by operation, tenant-specific practices, employees, and / or identification to the outside world). Different tenants may have different network requirements for a computer network. Examples of network requirements include processing speed, data storage capacity, security requirements, performance requirements, throughput requirements, latency requirements, resilience requirements, quality of service (QoS) requirements, tenant isolation, and / or consistency. The same computer network may need to implement different network requirements required by different tenants.

[0114] In one or more embodiments, in a multi-tenant computer network, tenant isolation is implemented to ensure that applications and / or data of different tenants are not shared with each other. Various tenant isolation methods can be used.

[0115] In an embodiment, each tenant is associated with a tenant ID. Each network resource of the multi-tenant computer network is marked with a tenant ID. Only when the tenant and the specific network resource are associated with the same tenant ID, the tenant is allowed to access the specific network resource.

[0116] In an embodiment, each tenant is associated with a tenant ID. Each application implemented by the computer network is labeled with a tenant ID. Additionally or alternatively, each data structure and / or data set stored by the computer network is labeled with a tenant ID. A tenant is allowed to access a particular application, data structure, and / or data set only if the tenant and the particular application, data structure, and / or data set are associated with the same tenant ID.

[0117] As an example, each database implemented by a multi-tenant computer network may be marked with a tenant ID. Only the tenant associated with the corresponding tenant ID may access the data of a particular database. As another example, each entry in a database implemented by a multi-tenant computer network may be marked with a tenant ID. Only the tenant associated with the corresponding tenant ID may access the data of a particular entry. However, a database may be shared by multiple tenants.

[0118] In an embodiment, the subscription list indicates which tenants have access to which applications. For each application, a list of tenant IDs of tenants authorized to access the application is stored. Only when the tenant ID of a tenant is included in the subscription list corresponding to a specific application, the tenant is allowed to access the specific application.

[0119] In an embodiment, network resources corresponding to different tenants (such as digital devices, virtual machines, application instances, and threads) are isolated to tenant-specific overlay networks maintained by a multi-tenant computer network. As an example, packets from any source device in a tenant overlay network can be sent only to other devices within the same tenant overlay network. Encapsulation tunnels are used to prohibit any transmission from source devices on a tenant overlay network to devices in other tenant overlay networks. Specifically, packets received from a source device are encapsulated in an outer packet. The outer packet is sent from a first encapsulation tunnel endpoint (communicating with a source device in a tenant overlay network) to a second encapsulation tunnel endpoint (communicating with a destination device in a tenant overlay network). The second encapsulation tunnel endpoint decapsulates the outer packet to obtain the original packet sent by the source device. The original packet is sent from the second encapsulation tunnel endpoint to a destination device in the same specific overlay network.

[0120] 9. Microservice Applications

[0121] According to one or more embodiments, the technology described herein is implemented using a microservices architecture. Microservices in this context refer to software logic designed to be independently deployable, which has endpoints that can be logically coupled to other microservices to build various applications. Applications built using microservices are different from monolithic applications, which are designed as a single fixed unit and typically include a single logical executable program. With microservices applications, different microservices can be independently deployed as separate executable programs. Microservices can communicate via API endpoints according to other communication protocols and / or using Hypertext Transfer Protocol (HTTP) messages. Microservices can be managed and updated separately, written in different languages, and executed independently of other microservices.

[0122] Microservices provide flexibility in managing and building applications. Different applications can be built by connecting different sets of microservices without changing the source code of the microservices. Therefore, microservices act as logical building blocks that can be arranged in various ways to build different applications. Microservices can provide monitoring services that notify the microservice manager (such as If-This-Then-That (IFTTT), Zapier or Oracle Self-Service Automation (OSSA)) when a trigger event in a trigger event set exposed to the microservice manager occurs. Microservices exposed to applications can alternatively or additionally provide action services that perform actions in applications based on data received from the microservice manager (by passing values, connecting actions to other triggers and / or data passed from other actions in the microservice manager, controllable and configurable via the microservice manager). Microservice triggers and / or actions can be linked together to form recipes for actions that occur in optional different applications, which are otherwise unaware of each other or do not have control or dependency on each other. These managed applications can be authenticated or plugged into the microservice manager, for example, using application credentials supplied by a user to the manager, without requiring re-authentication each time the managed application is used alone or in conjunction with other applications.

[0123] In one or more embodiments, microservices can be connected via a GUI. For example, microservices can be displayed as logical blocks within a window, frame, or other element of a GUI. A user can drag and drop microservices into an area of ​​the GUI for building an application. A user can connect the output of one microservice to the input of another microservice using a directed arrow or any other GUI element. The application builder can run validation tests to confirm that the output and input are compatible (e.g., by checking data types, size restrictions, etc.).

[0124] trigger

[0125] According to one or more embodiments, the above techniques may be encapsulated into a microservice. In other words, a microservice may trigger a notification based on the above techniques (which goes into the microservice manager for optional use by other inserted applications referred to herein as "target" microservices) and / or may be represented as a GUI block and connected to one or more other microservices. The trigger condition may include an absolute or relative threshold of a value, and / or an absolute or relative threshold of the amount of data to be analyzed or the duration of the data, such that a trigger to the microservice manager occurs whenever an inserted microservice application detects that a threshold has been crossed. For example, a user may request a trigger to go into the microservice manager when a microservice application detects that a value has crossed a trigger threshold.

[0126] In one embodiment, the trigger, when satisfied, may output data for consumption by the target microservice. In another embodiment, the trigger, when satisfied, outputs a binary value indicating that the trigger has been satisfied, or outputs the name of the field that satisfies the trigger condition or other context information. Additionally or alternatively, the target microservice may be connected to one or more other microservices so that an alert is input to the other microservices. The other microservices may perform response actions based on the above techniques, including but not limited to deploying additional resources, adjusting system configuration, and / or generating a GUI.

[0127] action

[0128] In one or more embodiments, the inserted microservice application can expose an action to the microservice manager. The exposed action can receive the identification of the data or data object or the location of the data as input, which causes the data to be moved to the data cloud.

[0129] In one or more embodiments, the exposed action may receive as input a request to increase or decrease an existing alarm threshold. The input may identify an existing in-application alarm threshold and whether to increase, decrease, or delete the threshold. Additionally or alternatively, the input may request the microservice application to create a new in-application alarm threshold. In-application alarms may trigger an alarm to a user when the user logs into the application, or may use a default or user-selected alarm mechanism available within the microservice application itself, rather than triggering an alarm to a user through other applications plugged into the microservice manager.

[0130] In one or more embodiments, the microservice application can generate and provide output based on inputs that identify, locate, or provide historical data and define the extent or scope of the requested output. The action, when triggered, causes the microservice application to provide, store, or display output, for example, as a data model or as aggregated data describing the data model.

[0131] In the foregoing specification, embodiments of the present invention have been described with reference to numerous specific details, which may vary from implementation to implementation. Therefore, the specification and drawings should be viewed in an illustrative rather than a restrictive sense. The sole and exclusive indicator of the scope of the invention and what the applicant intends to be the scope of the invention is the literal and equivalent range of the resulting claims in the specific form of the set of claims issued from this application, including any subsequent corrections.

[0132] In addition, this technology can also be used in the following aspects;

[0133] 1. One or more non-transitory machine-readable media storing instructions that, when executed by one or more hardware processors, cause the one or more hardware processors to:

[0134] performing natural language processing to extract first user-supplied text from the user-supplied natural language query;

[0135] performing a first lookup of the first user-supplied text in one or more dictionary data structures associated with a multidimensional database to determine that the first user-supplied text is associated with a first dimension of a plurality of dimensions in the multidimensional database based on a first mapping in the one or more dictionary data structures,

[0136] wherein the first mapping maps the first dimension to a first set of one or more characters, each character being associated with at least one member of the first dimension;

[0137] performing a second lookup of the first user-supplied text and the first dimension in the one or more dictionary data structures to determine that the first user-supplied text is associated with a first particular member of the first dimension based on a second mapping in the one or more dictionary data structures,

[0138] wherein the second mapping maps each specific word in the first set of one or more words to one or more specific members of the first dimension associated with the specific word in the first set of one or more words; and

[0139] A multidimensional database query is generated to satisfy the user-supplied natural language query, wherein generating the multidimensional database query includes generating a first query clause that references a first particular member of a first dimension.

[0140] 2. The one or more media of 1 further storing instructions that, when executed by one or more processors, cause the one or more processors to:

[0141] The one or more dictionary data structures are generated.

[0142] 3. The one or more media of 2, wherein generating the one or more dictionary data structures comprises:

[0143] generating a first mapping;

[0144] generating a second mapping;

[0145] generating a third mapping that maps a second dimension of the plurality of dimensions to a second set of one or more literals, each literal being associated with at least one member of the second dimension; and

[0146] A fourth mapping is generated that maps each specific word in the second set of one or more words to one or more specific members of the second dimension associated with the specific word in the second set of one or more words.

[0147] 4. One or more media as described in 3, wherein the one or more dictionary data structures include:

[0148] A first dictionary data structure including a first mapping and a third mapping; and

[0149] The second dictionary data structure includes a second mapping and a fourth mapping.

[0150] 5. The one or more media of 3, wherein generating the first mapping comprises:

[0151] obtaining a plurality of literals from metadata associated with a plurality of members of a first dimension;

[0152] filtering out one or more trivial characters from the plurality of characters to obtain a plurality of non-trivial characters; and

[0153] The plurality of non-trivial words are stored in the one or more dictionary data structures as a first set of one or more words.

[0154] 6. One or more media as described in claim 5, wherein the metadata associated with the plurality of members of the first dimension includes at least one or more member names and one or more user-defined attributes of the plurality of members.

[0155] 7. The one or more media of 1 further storing instructions that, when executed by one or more processors, cause the one or more processors to:

[0156] applying the multidimensional database query to the multidimensional database to obtain results for the user-supplied natural language query; and

[0157] A visual report is generated that includes the results of the user-supplied natural language query.

[0158] 8. The one or more media of 7 further storing instructions that, when executed by one or more processors, cause the one or more processors to:

[0159] receiving user input to modify one or more report properties associated with the visual report;

[0160] Based on the user input: modifying the visual report.

[0161] 9. One or more media as described in 1, wherein performing natural language processing on the user-supplied natural language query includes filtering out one or more trivial words from the user-supplied natural language query.

[0162] 10. The one or more media of 1 further storing instructions that, when executed by one or more processors, cause the one or more processors to:

[0163] performing natural language processing to extract second user-supplied text from the user-supplied natural language query;

[0164] performing a third lookup of the second user-supplied text in the one or more dictionary data structures to determine that the second user-supplied text is associated with a second dimension of the plurality of dimensions based on a third mapping in the one or more dictionary data structures,

[0165] wherein the third mapping maps the second dimension to a second set of one or more characters, each character being associated with at least one member of the second dimension; and

[0166] performing a fourth lookup of the second user-supplied text and the second dimension in the one or more dictionary data structures to determine that the second user-supplied text is associated with a particular member of the second dimension based on a fourth mapping in the one or more dictionary data structures,

[0167] wherein the fourth mapping maps each specific word in the second set of one or more words to one or more specific members of the second dimension associated with the specific word in the second set of one or more words,

[0168] Generating the multidimensional database query further includes generating a second query clause referencing the specific member of the second dimension.

[0169] 11. The one or more media of 1 further storing instructions that, when executed by one or more processors, cause the one or more processors to:

[0170] determining that the first user-supplied text is associated with a second specific member of the first dimension;

[0171] determining that a second specific member of the first dimension is a child member of the first specific member of the first dimension, wherein the data associated with the first specific member of the first dimension includes the data associated with the second specific member of the first dimension; and

[0172] Based on determining that the second specific member of the first dimension is a child member of the first specific member of the first dimension: excluding the second specific member of the first dimension from the multidimensional database query.

[0173] 12. One or more media as described in 1, wherein the one or more dictionary data structures include corresponding importance scores associated with the first user-supplied text and the first particular member of the first dimension.

[0174] 13. One or more media as described in 12, wherein the corresponding importance score is the ratio of (a) the number of times the text supplied by the first user appears in the metadata associated with the first specific member of the first dimension to (b) the total number of words in the metadata associated with the first specific member of the first dimension.

[0175] 14. The one or more media of 12 further storing instructions that, when executed by one or more processors, cause the one or more processors to:

[0176] Prior to generating the multidimensional database query, it is determined that the corresponding importance scores satisfy a threshold criterion.

[0177] 15. One or more media as described in claim 12, wherein determining that the corresponding importance score meets the threshold criterion includes determining that the corresponding importance score is a highest importance score among multiple importance scores associated with multiple members respectively associated with the text supplied by the first user.

[0178] 16. One or more media as described in claim 1, wherein performing natural language processing on the user-supplied natural language query includes determining a corresponding tag, a corresponding part of speech, and a corresponding word-gram for each word in the user-supplied natural language query.

[0179] 17. The one or more media of 1, wherein the multidimensional database does not include any relational database tables.

[0180] 18. The one or more media of claim 1, wherein the multidimensional database comprises one or more relational database tables.

[0181] 19. A system comprising:

[0182] at least one device including a hardware processor;

[0183] The system is configured to perform operations including:

[0184] receiving a natural language query supplied by a user;

[0185] performing natural language processing to extract first user-supplied text from the user-supplied natural language query;

[0186] performing a first lookup of the first user-supplied text in one or more dictionary data structures associated with a multidimensional database to determine that the first user-supplied text is associated with a first dimension of a plurality of dimensions in the multidimensional database based on a first mapping in the one or more dictionary data structures,

[0187] wherein the first mapping maps the first dimension to a first set of one or more characters, each character being associated with at least one member of the first dimension;

[0188] performing a second lookup of the first user-supplied text and the first dimension in the one or more dictionary data structures to determine that the first user-supplied text is associated with a first particular member of the first dimension based on a second mapping in the one or more dictionary data structures,

[0189] wherein the second mapping maps each specific word in the first set of one or more words to one or more specific members of the first dimension associated with the specific word in the first set of one or more words; and

[0190] A multidimensional database query is generated to satisfy the user-supplied natural language query, wherein generating the multidimensional database query includes generating a first query clause that references a first particular member of a first dimension.

[0191] 20. A method comprising:

[0192] generating one or more dictionary data structures associated with the multidimensional database;

[0193] receiving a natural language query supplied by a user;

[0194] performing natural language processing to extract first user-supplied text from the user-supplied natural language query,

[0195] wherein performing natural language processing on the user-supplied natural language query includes filtering out one or more trivial words from the user-supplied natural language query, and

[0196] The performing of natural language processing on the natural language query provided by the user includes determining, for each word in the natural language query provided by the user, a corresponding tag, a corresponding part of speech, and a corresponding word unit;

[0197] performing natural language processing to extract second user-supplied text from the user-supplied natural language query;

[0198] performing a first lookup of the first user-supplied text in the one or more dictionary data structures to determine that the first user-supplied text is associated with a first dimension of the plurality of dimensions in the multidimensional database based on a first mapping in the one or more dictionary data structures,

[0199] wherein the first mapping maps the first dimension to a first set of one or more characters, each character being associated with at least one member of the first dimension;

[0200] performing a second lookup of the first user-supplied text and the first dimension in the one or more dictionary data structures to determine that the first user-supplied text is associated with a first particular member of the first dimension based on a second mapping in the one or more dictionary data structures,

[0201] wherein the second mapping maps each specific word in the first set of one or more words to one or more specific members of the first dimension associated with the specific word in the first set of one or more words;

[0202] performing a third lookup of the second user-supplied text in the one or more dictionary data structures to determine that the second user-supplied text is associated with a second dimension of the plurality of dimensions based on a third mapping in the one or more dictionary data structures,

[0203] wherein the third mapping maps the second dimension to a second set of one or more characters, each character being associated with at least one member of the second dimension;

[0204] performing a fourth lookup of the second user-supplied text and the second dimension in the one or more dictionary data structures to determine that the second user-supplied text is associated with a particular member of the second dimension based on a fourth mapping in the one or more dictionary data structures,

[0205] wherein the fourth mapping maps each specific word in the second set of one or more words to one or more specific members of the second dimension associated with the specific word in the second set of one or more words;

[0206] determining that the first user-supplied text is associated with a second specific member of the first dimension;

[0207] determining that a second specific member of the first dimension is a child member of the first specific member of the first dimension, wherein the data associated with the first specific member of the first dimension includes the data associated with the second specific member of the first dimension;

[0208] Based on determining that the second specific member of the first dimension is a sub-member of the first specific member of the first dimension: excluding the second specific member of the first dimension from the multidimensional database query;

[0209] generating a multidimensional database query to satisfy the user-supplied natural language query, wherein generating the multidimensional database query includes generating a first query clause referencing a first specific member of a first dimension and a second query clause referencing a specific member of a second dimension;

[0210] applying the multidimensional database query to the multidimensional database to obtain results for the user-supplied natural language query;

[0211] generating a visual report comprising said results of said user-supplied natural language query;

[0212] receiving user input to modify one or more report properties associated with the visual report; and

[0213] based on the user input: modifying the visual report,

[0214] Wherein generating the one or more data structures comprises:

[0215] Generate a first mapping, wherein generating the first mapping comprises:

[0216] obtaining a plurality of texts from metadata associated with a plurality of members of a first dimension, wherein the metadata associated with the plurality of members of the first dimension includes at least one or more member names and one or more user-defined attributes of the plurality of members;

[0217] filtering out one or more trivial characters from the plurality of characters to obtain a plurality of non-trivial characters; and

[0218] storing the plurality of non-trivial words as a first set of one or more words in the one or more dictionary data structures;

[0219] generating a second mapping;

[0220] generating a third mapping; and

[0221] Generate a fourth mapping,

[0222] Wherein, the one or more dictionary data structures include:

[0223] A first dictionary data structure including a first mapping and a third mapping; and

[0224] A second dictionary data structure includes a second mapping and a fourth mapping,

[0225] wherein the one or more dictionary data structures include corresponding importance scores associated with a first user-supplied word and a first specific member of a first dimension, wherein the corresponding importance score is a ratio of (a) a number of occurrences of the first user-supplied word in metadata associated with the first specific member of the first dimension to (b) a total number of words in the metadata associated with the first specific member of the first dimension, and the operations further include:

[0226] Before generating the multidimensional database query, determining that the corresponding importance score meets a threshold criterion,

[0227] wherein determining that the corresponding importance score satisfies the threshold criterion comprises determining that the corresponding importance score is a highest importance score among a plurality of importance scores respectively associated with a plurality of members associated with the text supplied by the first user,

[0228] wherein the multidimensional database does not include any relational database tables,

[0229] The method is performed by at least one device including a hardware processor.

[0230] 21. A method comprising:

[0231] performing natural language processing to extract first user-supplied text from the user-supplied natural language query;

[0232] performing a first lookup of the first user-supplied text in one or more dictionary data structures associated with a multidimensional database to determine that the first user-supplied text is associated with a first dimension of a plurality of dimensions in the multidimensional database based on a first mapping in the one or more dictionary data structures,

[0233] wherein the first mapping maps the first dimension to a first set of one or more characters, each character being associated with at least one member of the first dimension;

[0234] performing a second lookup of the first user-supplied text and the first dimension in the one or more dictionary data structures to determine that the first user-supplied text is associated with a first particular member of the first dimension based on a second mapping in the one or more dictionary data structures,

[0235] wherein the second mapping maps each specific word in the first set of one or more words to one or more specific members of the first dimension associated with the specific word in the first set of one or more words; and

[0236] generating a multidimensional database query to satisfy the user-supplied natural language query, wherein generating the multidimensional database query comprises generating a first query clause referencing a first specific member of a first dimension,

[0237] The method is performed by at least one device including a hardware processor.

[0238] 22. The method according to 21, further comprising:

[0239] The one or more dictionary data structures are generated.

[0240] 23. The method of 22, wherein generating the one or more dictionary data structures comprises:

[0241] generating a first mapping;

[0242] generating a second mapping;

[0243] generating a third mapping that maps a second dimension of the plurality of dimensions to a second set of one or more literals, each literal being associated with at least one member of the second dimension; and

[0244] A fourth mapping is generated that maps each specific word in the second set of one or more words to one or more specific members of the second dimension associated with the specific word in the second set of one or more words.

[0245] 24. The method of 23, wherein the one or more dictionary data structures include:

[0246] A first dictionary data structure including a first mapping and a third mapping; and

[0247] The second dictionary data structure includes a second mapping and a fourth mapping.

[0248] 25. The method of 23, wherein generating the first mapping comprises:

[0249] obtaining a plurality of literals from metadata associated with a plurality of members of a first dimension;

[0250] filtering out one or more trivial characters from the plurality of characters to obtain a plurality of non-trivial characters; and

[0251] The plurality of non-trivial words are stored in the one or more dictionary data structures as a first set of one or more words.

[0252] 26. The method of 25, wherein the metadata associated with the plurality of members of the first dimension comprises at least one or more member names and one or more user-defined attributes of the plurality of members.

[0253] 27. The method according to 21, further comprising:

[0254] applying the multidimensional database query to the multidimensional database to obtain results for the user-supplied natural language query; and

[0255] A visual report is generated that includes the results of the user-supplied natural language query.

[0256] 28. The method according to 27, further comprising:

[0257] receiving user input to modify one or more report properties associated with the visual report;

[0258] Based on the user input: modifying the visual report.

[0259] 29. The method of 21, wherein performing natural language processing on the user-supplied natural language query comprises filtering out one or more trivial words from the user-supplied natural language query.

[0260] 30. The method according to 21, further comprising:

[0261] performing natural language processing to extract second user-supplied text from the user-supplied natural language query;

[0262] performing a third lookup of the second user-supplied text in the one or more dictionary data structures to determine that the second user-supplied text is associated with a second dimension of the plurality of dimensions based on a third mapping in the one or more dictionary data structures,

[0263] wherein the third mapping maps the second dimension to a second set of one or more characters, each character being associated with at least one member of the second dimension; and

[0264] performing a fourth lookup of the second user-supplied text and the second dimension in the one or more dictionary data structures to determine that the second user-supplied text is associated with a particular member of the second dimension based on a fourth mapping in the one or more dictionary data structures,

[0265] wherein the fourth mapping maps each specific word in the second set of one or more words to one or more specific members of the second dimension associated with the specific word in the second set of one or more words,

[0266] Generating the multidimensional database query further includes generating a second query clause referencing the specific member of the second dimension.

[0267] 31. The method according to 21, further comprising:

[0268] determining that the first user-supplied text is associated with a second specific member of the first dimension;

[0269] determining that a second specific member of the first dimension is a child member of the first specific member of the first dimension, wherein the data associated with the first specific member of the first dimension includes the data associated with the second specific member of the first dimension; and

[0270] Based on determining that the second specific member of the first dimension is a child member of the first specific member of the first dimension: excluding the second specific member of the first dimension from the multidimensional database query.

[0271] 32. The method of 21, wherein the one or more dictionary data structures include corresponding importance scores associated with the first user-supplied text and the first particular member of the first dimension.

[0272] 33. A method as described in 32, wherein the corresponding importance score is the ratio of (a) the number of times the text supplied by the first user appears in the metadata associated with the first specific member of the first dimension to (b) the total number of words in the metadata associated with the first specific member of the first dimension.

[0273] 34. The method as described in 32, further comprising:

[0274] Prior to generating the multidimensional database query, it is determined that the corresponding importance scores satisfy a threshold criterion.

[0275] 35. The method of 32, wherein determining that the corresponding importance score satisfies the threshold criterion comprises determining that the corresponding importance score is a highest importance score among a plurality of importance scores respectively associated with a plurality of members associated with the text supplied by the first user.

[0276] 36. The method of 21, wherein performing natural language processing on the natural language query provided by the user comprises determining, for each word in the natural language query provided by the user, a corresponding tag, a corresponding part of speech, and a corresponding word-gram.

[0277] 37. The method of 21, wherein the multidimensional database does not include any relational database tables.

[0278] 38. The method of 21, wherein the multidimensional database comprises one or more relational database tables.

[0279] 39. An apparatus comprising means for performing the method of any one of 21-38.

[0280] 40. A system comprising:

[0281] at least one device, the at least one device comprising a processor, and

[0282] A memory coupled to the memory and comprising instructions stored thereon, which, when executed by the processor, cause the processor to perform a method as described in any one of 21-38.

[0283] Appendix A

[0284]

[0285]

[0286]

[0287] Appendix B

[0288]

[0289]

[0290]

[0291]

[0292]

[0293]

[0294]

[0295]

[0296]

[0297]

[0298]

[0299]

Claims

1. A non-transitory machine-readable medium storing instructions that, when executed by one or more hardware processors, cause the one or more hardware processors to: performing natural language processing to extract first user-supplied text from the user-supplied natural language query; performing a first lookup of the first user-supplied text in one or more dictionary data structures associated with a multidimensional database to determine that the first user-supplied text is associated with a first dimension of a plurality of dimensions in the multidimensional database based on a first mapping in the one or more dictionary data structures, wherein the first mapping maps the first dimension to a first set of one or more characters, each character being associated with at least one member of the first dimension; performing a second lookup of the first user-supplied text and the first dimension in the one or more dictionary data structures to determine that the first user-supplied text is associated with a first particular member of the first dimension based on a second mapping in the one or more dictionary data structures, wherein the second mapping maps each specific word in the first set of one or more words to one or more specific members of the first dimension associated with the specific word in the first set of one or more words; and A multidimensional database query is generated to satisfy the user-supplied natural language query, wherein generating the multidimensional database query includes generating a first query clause that references a first particular member of a first dimension.

2. The non-transitory machine-readable medium of claim 1 , further storing instructions that, when executed by one or more processors, cause the one or more processors to: The one or more dictionary data structures are generated.

3. The non-transitory machine-readable medium of claim 2, wherein generating the one or more dictionary data structures comprises: generating a first mapping; generating a second mapping; generating a third mapping that maps a second dimension of the plurality of dimensions to a second set of one or more literals, each literal being associated with at least one member of the second dimension; as well as A fourth mapping is generated that maps each specific word in the second set of one or more words to one or more specific members of the second dimension associated with the specific word in the second set of one or more words.

4. The non-transitory machine-readable medium of claim 3, wherein the one or more dictionary data structures include: A first dictionary data structure including a first mapping and a third mapping; as well as The second dictionary data structure includes a second mapping and a fourth mapping.

5. The non-transitory machine-readable medium of claim 3, wherein generating the first mapping comprises: obtaining a plurality of literals from metadata associated with a plurality of members of a first dimension; filtering out one or more trivial characters from the plurality of characters to obtain a plurality of non-trivial characters; as well as The plurality of non-trivial words are stored in the one or more dictionary data structures as a first set of one or more words. 6 . The non-transitory machine-readable medium of claim 5 , wherein the metadata associated with the plurality of members of the first dimension comprises at least one or more member names and one or more user-defined attributes of the plurality of members.

7. The non-transitory machine-readable medium of claim 1 further storing instructions that, when executed by one or more processors, cause the one or more processors to: applying the multidimensional database query to the multidimensional database to obtain results for the user-supplied natural language query; and A visual report is generated that includes the results of the user-supplied natural language query.

8. The non-transitory machine-readable medium of claim 7, further storing instructions that, when executed by one or more processors, cause the one or more processors to: receiving user input to modify one or more report properties associated with the visual report; Based on the user input: modifying the visual report.

9. The non-transitory machine-readable medium of claim 1, wherein performing natural language processing on the user-supplied natural language query comprises filtering out one or more trivial words from the user-supplied natural language query.

10. The non-transitory machine-readable medium of claim 1 further storing instructions that, when executed by one or more processors, cause the one or more processors to: performing natural language processing to extract second user-supplied text from the user-supplied natural language query; performing a third lookup of the second user-supplied text in the one or more dictionary data structures to determine that the second user-supplied text is associated with a second dimension of the plurality of dimensions based on a third mapping in the one or more dictionary data structures, wherein the third mapping maps the second dimension to a second set of one or more characters, each character being associated with at least one member of the second dimension; and performing a fourth lookup of the second user-supplied text and the second dimension in the one or more dictionary data structures to determine that the second user-supplied text is associated with a particular member of the second dimension based on a fourth mapping in the one or more dictionary data structures, wherein the fourth mapping maps each specific word in the second set of one or more words to one or more specific members of the second dimension associated with the specific word in the second set of one or more words, Generating the multidimensional database query further includes generating a second query clause referencing the specific member of the second dimension.

11. The non-transitory machine-readable medium of claim 1 , further storing instructions that, when executed by one or more processors, cause the one or more processors to: determining that the first user-supplied text is associated with a second specific member of the first dimension; determining that a second specific member of the first dimension is a child member of the first specific member of the first dimension, wherein the data associated with the first specific member of the first dimension includes the data associated with the second specific member of the first dimension; and Based on determining that the second specific member of the first dimension is a child member of the first specific member of the first dimension: excluding the second specific member of the first dimension from the multidimensional database query.

12. The non-transitory machine-readable medium of claim 1, wherein the one or more dictionary data structures include corresponding importance scores associated with a first user-supplied word and a first particular member of a first dimension.

13. A non-transitory machine-readable medium as described in claim 12, wherein the corresponding importance score is a ratio of (a) the number of times the text supplied by the first user appears in the metadata associated with the first specific member of the first dimension to (b) the total number of words in the metadata associated with the first specific member of the first dimension.

14. The non-transitory machine-readable medium of claim 12, further storing instructions that, when executed by one or more processors, cause the one or more processors to: Prior to generating the multidimensional database query, it is determined that the corresponding importance scores satisfy a threshold criterion.

15. The non-transitory machine-readable medium of claim 14, wherein determining that the corresponding importance score satisfies the threshold criterion comprises determining that the corresponding importance score is a highest importance score among a plurality of importance scores respectively associated with a plurality of members associated with the text supplied by the first user.

16. The non-transitory machine-readable medium of claim 1, wherein performing natural language processing on the user-supplied natural language query comprises determining, for each word in the user-supplied natural language query, a corresponding tag, a corresponding part of speech, and a corresponding word-gram.

17. The non-transitory machine-readable medium of claim 1, wherein the multidimensional database does not include any relational database tables.

18. The non-transitory machine-readable medium of claim 1, wherein the multidimensional database comprises one or more relational database tables.

19. A system for generating a multidimensional database query based on a natural language query supplied by a user, comprising: at least one device including a hardware processor; The system is configured to perform operations including: receiving a natural language query supplied by a user; performing natural language processing to extract first user-supplied text from the user-supplied natural language query; performing a first lookup of the first user-supplied text in one or more dictionary data structures associated with a multidimensional database to determine that the first user-supplied text is associated with a first dimension of a plurality of dimensions in the multidimensional database based on a first mapping in the one or more dictionary data structures, wherein the first mapping maps the first dimension to a first set of one or more characters, each character being associated with at least one member of the first dimension; performing a second lookup of the first user-supplied text and the first dimension in the one or more dictionary data structures to determine that the first user-supplied text is associated with a first particular member of the first dimension based on a second mapping in the one or more dictionary data structures, wherein the second mapping maps each specific word in the first set of one or more words to one or more specific members of the first dimension associated with the specific word in the first set of one or more words; and A multidimensional database query is generated to satisfy the user-supplied natural language query, wherein generating the multidimensional database query includes generating a first query clause that references a first particular member of a first dimension.

20. A method for generating a multidimensional database query based on a natural language query supplied by a user, comprising: generating one or more dictionary data structures associated with the multidimensional database; receiving a natural language query supplied by a user; performing natural language processing to extract first user-supplied text from the user-supplied natural language query, wherein performing natural language processing on the user-supplied natural language query includes filtering out one or more trivial words from the user-supplied natural language query, and The performing of natural language processing on the natural language query provided by the user includes determining, for each word in the natural language query provided by the user, a corresponding tag, a corresponding part of speech, and a corresponding word unit; performing natural language processing to extract second user-supplied text from the user-supplied natural language query; performing a first lookup of the first user-supplied text in the one or more dictionary data structures to determine that the first user-supplied text is associated with a first dimension of the plurality of dimensions in the multidimensional database based on a first mapping in the one or more dictionary data structures, wherein the first mapping maps the first dimension to a first set of one or more characters, each character being associated with at least one member of the first dimension; performing a second lookup of the first user-supplied text and the first dimension in the one or more dictionary data structures to determine that the first user-supplied text is associated with a first particular member of the first dimension based on a second mapping in the one or more dictionary data structures, wherein the second mapping maps each specific word in the first set of one or more words to one or more specific members of the first dimension associated with the specific word in the first set of one or more words; performing a third lookup of the second user-supplied text in the one or more dictionary data structures to determine that the second user-supplied text is associated with a second dimension of the plurality of dimensions based on a third mapping in the one or more dictionary data structures, wherein the third mapping maps the second dimension to a second set of one or more characters, each character being associated with at least one member of the second dimension; performing a fourth lookup of the second user-supplied text and the second dimension in the one or more dictionary data structures to determine that the second user-supplied text is associated with a particular member of the second dimension based on a fourth mapping in the one or more dictionary data structures, wherein the fourth mapping maps each specific word in the second set of one or more words to one or more specific members of the second dimension associated with the specific word in the second set of one or more words; determining that the first user-supplied text is associated with a second specific member of the first dimension; determining that a second specific member of the first dimension is a child member of the first specific member of the first dimension, wherein the data associated with the first specific member of the first dimension includes the data associated with the second specific member of the first dimension; Based on determining that the second specific member of the first dimension is a sub-member of the first specific member of the first dimension: excluding the second specific member of the first dimension from the multidimensional database query; generating a multidimensional database query to satisfy the user-supplied natural language query, wherein generating the multidimensional database query includes generating a first query clause referencing a first specific member of a first dimension and a second query clause referencing a specific member of a second dimension; applying the multidimensional database query to the multidimensional database to obtain results for the user-supplied natural language query; generating a visual report including the results of the user-supplied natural language query; receiving user input to modify one or more report properties associated with the visual report; and based on the user input: modifying the visual report, Wherein generating the one or more data structures comprises: Generate a first mapping, wherein generating the first mapping comprises: obtaining a plurality of texts from metadata associated with a plurality of members of a first dimension, wherein the metadata associated with the plurality of members of the first dimension includes at least one or more member names and one or more user-defined attributes of the plurality of members; filtering out one or more trivial characters from the plurality of characters to obtain a plurality of non-trivial characters; and storing the plurality of non-trivial words as a first set of one or more words in the one or more dictionary data structures; generating a second mapping; generating a third mapping; and Generate a fourth mapping, Wherein, the one or more dictionary data structures include: A first dictionary data structure including a first mapping and a third mapping; and A second dictionary data structure includes a second mapping and a fourth mapping, wherein the one or more dictionary data structures include corresponding importance scores associated with a first user-supplied word and a first specific member of a first dimension, wherein the corresponding importance score is a ratio of (a) the number of times the first user-supplied word appears in metadata associated with the first specific member of the first dimension to (b) the total number of words in the metadata associated with the first specific member of the first dimension, wherein the method further comprises: Before generating the multidimensional database query, determining that the corresponding importance score meets a threshold criterion, wherein determining that the corresponding importance score satisfies the threshold criterion comprises determining that the corresponding importance score is a highest importance score among a plurality of importance scores respectively associated with a plurality of members associated with the text supplied by the first user, wherein the multidimensional database does not include any relational database tables, The method is performed by at least one device including a hardware processor.

21. A method for generating a multidimensional database query based on a natural language query supplied by a user, comprising: performing natural language processing to extract first user-supplied text from the user-supplied natural language query; performing a first lookup of the first user-supplied text in one or more dictionary data structures associated with a multidimensional database to determine that the first user-supplied text is associated with a first dimension of a plurality of dimensions in the multidimensional database based on a first mapping in the one or more dictionary data structures, wherein the first mapping maps the first dimension to a first set of one or more characters, each character being associated with at least one member of the first dimension; performing a second lookup of the first user-supplied text and the first dimension in the one or more dictionary data structures to determine that the first user-supplied text is associated with a first particular member of the first dimension based on a second mapping in the one or more dictionary data structures, wherein the second mapping maps each specific word in the first set of one or more words to one or more specific members of the first dimension associated with the specific word in the first set of one or more words; and generating a multidimensional database query to satisfy the user-supplied natural language query, wherein generating the multidimensional database query comprises generating a first query clause referencing a first specific member of a first dimension, The method is performed by at least one device including a hardware processor.

22. The method of claim 21, further comprising: The one or more dictionary data structures are generated.

23. The method of claim 22, wherein generating the one or more dictionary data structures comprises: generating a first mapping; generating a second mapping; generating a third mapping that maps a second dimension of the plurality of dimensions to a second set of one or more literals, each literal being associated with at least one member of the second dimension; as well as A fourth mapping is generated that maps each specific word in the second set of one or more words to one or more specific members of the second dimension associated with the specific word in the second set of one or more words.

24. The method of claim 23, wherein the one or more dictionary data structures include: A first dictionary data structure including a first mapping and a third mapping; as well as The second dictionary data structure includes a second mapping and a fourth mapping.

25. The method of claim 23, wherein generating the first mapping comprises: obtaining a plurality of literals from metadata associated with a plurality of members of a first dimension; filtering out one or more trivial characters from the plurality of characters to obtain a plurality of non-trivial characters; as well as The plurality of non-trivial words are stored in the one or more dictionary data structures as a first set of one or more words.

26. The method of claim 25, wherein the metadata associated with the plurality of members of the first dimension comprises at least one or more member names and one or more user-defined attributes of the plurality of members.

27. The method of claim 21, further comprising: applying the multidimensional database query to the multidimensional database to obtain results for the user-supplied natural language query; as well as A visual report is generated that includes the results of the user-supplied natural language query.

28. The method of claim 27, further comprising: receiving user input to modify one or more report properties associated with the visual report; Based on the user input: modifying the visual report.

29. The method of claim 21, wherein performing natural language processing on the user-supplied natural language query comprises filtering out one or more trivial words from the user-supplied natural language query.

30. The method of claim 21, further comprising: performing natural language processing to extract second user-supplied text from the user-supplied natural language query; performing a third lookup of the second user-supplied text in the one or more dictionary data structures to determine that the second user-supplied text is associated with a second dimension of the plurality of dimensions based on a third mapping in the one or more dictionary data structures, wherein the third mapping maps the second dimension to a second set of one or more characters, each character being associated with at least one member of the second dimension; and performing a fourth lookup of the second user-supplied text and the second dimension in the one or more dictionary data structures to determine that the second user-supplied text is associated with a particular member of the second dimension based on a fourth mapping in the one or more dictionary data structures, wherein the fourth mapping maps each specific word in the second set of one or more words to one or more specific members of the second dimension associated with the specific word in the second set of one or more words, Generating the multidimensional database query further includes generating a second query clause referencing the specific member of the second dimension.

31. The method of claim 21, further comprising: determining that the first user-supplied text is associated with a second specific member of the first dimension; determining that a second specific member of the first dimension is a child member of the first specific member of the first dimension, wherein the data associated with the first specific member of the first dimension includes the data associated with the second specific member of the first dimension; and Based on determining that the second specific member of the first dimension is a child member of the first specific member of the first dimension: excluding the second specific member of the first dimension from the multidimensional database query.

32. The method of claim 21, wherein the one or more dictionary data structures include corresponding importance scores associated with a first user-supplied word and a first particular member of a first dimension.

33. A method as claimed in claim 32, wherein the corresponding importance score is the ratio of (a) the number of times the text supplied by the first user appears in the metadata associated with the first specific member of the first dimension to (b) the total number of words in the metadata associated with the first specific member of the first dimension.

34. The method of claim 32, further comprising: Prior to generating the multidimensional database query, it is determined that the corresponding importance scores satisfy a threshold criterion.

35. The method of claim 34, wherein determining that the corresponding importance score satisfies the threshold criterion comprises determining that the corresponding importance score is a highest importance score among a plurality of importance scores associated with a plurality of members respectively associated with the text supplied by the first user.

36. The method of claim 21, wherein performing natural language processing on the user-supplied natural language query comprises determining, for each word in the user-supplied natural language query, a corresponding tag, a corresponding part of speech, and a corresponding word-gram.

37. The method of claim 21, wherein the multidimensional database does not include any relational database tables.

38. The method of claim 21, wherein the multidimensional database comprises one or more relational database tables.

39. An apparatus comprising means for performing the method of any one of claims 21-38.

40. A system for generating a multidimensional database query based on a natural language query supplied by a user, comprising: at least one device, the at least one device comprising a processor, and A memory coupled to the memory and comprising instructions stored thereon, which, when executed by the processor, cause the processor to perform the method of any one of claims 21-38.