Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SYSTEMS AND METHODS FOR ASSOCIATIVE ANALYSIS OF DATA
Document Type and Number:
WIPO Patent Application WO/2024/028652
Kind Code:
A1
Abstract:
Technologies are provided for associative analysis of data within a database, without transferring the data from the database to a storage network location pertaining to an analysis system that performs the associative analysis. Hence, the technologies permit applying rich associative analysis to data in an original storage system containing the data. The associative analysis can be performed according to a database model used to retain the data in the original storage system, without reconfiguration of the data.

Inventors:
MORDVINOV VLADIMIR (CA)
TUTUK ELIF (CA)
KELLY FLOYD (CA)
POTTER CHARLES (CA)
Application Number:
PCT/IB2023/000462
Publication Date:
February 08, 2024
Filing Date:
August 01, 2023
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
QLIKTECH INT AB (SE)
International Classes:
G06F16/242; G06F16/2452; G06F16/2458
Foreign References:
US20200004744A12020-01-02
US5428737A1995-06-27
US20200117659A12020-04-16
EP4033373A12022-07-27
Attorney, Agent or Firm:
LITTLEFIELD, Matthew, J. et al. (US)
Download PDF:
Claims:
ATTORNEY DOCKET NO.: 36339.0051P1 CLAIMS What is claimed is: 1. A computer-implemented method comprising: generating, by a computing system, a client query based on: one or more selections within a user interface presented at a client device, wherein the client device is remotely located relative to the computing system, and a group of values corresponding to at least one selection of the one or more selections, each one of the group of values defining a filtering criterion associated with source data stored in a database, wherein the client query is not executable against the database; transforming the client query into a target query, wherein the target query is directly executable against the database; causing execution of the target query without transferring the source data from the database; receiving result data satisfying the target query; generating, based on the result data, a data structure that controls visualization of the result data at the user interface; and causing, based on the data structure, presentation of the result data at the user interface. 2. The computer-implemented method of claim 1, wherein causing execution of the target query comprises causing a connector component to execute the target query. 3. The computer-implemented method of any one of claims 1 or 2, wherein transforming the client query into the target query comprises applying multiple rules pertaining to a semantic mapping. 4. The computer-implemented method of claim 3, wherein the multiple rules comprise a first rule pertaining to an associative model and a second rule pertaining to a semantic correspondence between the client query and the target query. 5. The computer-implemented method of any one of the preceding claims, wherein transforming the client query into the target query comprises generating a logical plan corresponding to the target query. ATTORNEY DOCKET NO.: 36339.0051P1 6. The computer-implemented method of claim 5, wherein generating the logical plan corresponding to the target query is based on a second logical plan corresponding to the client query. 7. The computer-implemented method of any one of claims 5 or 6, further comprising generating, by the computing system, using the logical plan corresponding to the target query, a query statement associated with the database. 8. The computer-implemented method of claim 7, wherein the logical plan is indicative of semantics of the target query. 9. The computer-implemented method of claim 8, wherein generating the query statement comprises mapping the semantics to one or more expressions. 10. The computer-implemented method of any one of the preceding claims, wherein the client query is an associative analysis query. 11. The computer-implemented method of claim 10, wherein the associative analysis query is configured according to selection query language. 12. The computer-implemented method of claim 11, wherein the target query is one of a Structured Query Language (SQL) query, a multidimensional expressions (MDX) query, or a NoSQL query. 13. An apparatus comprising: one or more processors; and memory storing computer-executable instructions that, in response to execution by the one or more processors, cause the apparatus to perform the method of any one of claims 1-12. 14. At least one non-transitory computer-readable storage medium storing processor- executable instructions that, in response to execution by at least one processor of one or more computing devices, cause the one or more computing devices to perform the method of any one of claims 1-12. ATTORNEY DOCKET NO.: 36339.0051P1 15. A system comprising: at least one computing device configured to perform the method of any one of claims 1-12; and a client device configured to at least present the user interface.
Description:
ATTORNEY DOCKET NO.: 36339.0051P1 SYSTEMS AND METHODS FOR ASSOCIATIVE ANALYSIS OF DATA CROSS-REFERENCE TO RELATED PATENT APPLICATION [0001] This application claims priority to U.S. Provisional App. No.63/394,215, filed on August 1, 2022, the entirety of which is incorporated by reference herein. BACKGROUND [0002] A database can be configured according to a database model and a database standard for accessing data contained within the database. The database standard can define a query language to compose queries that are directly executable against the database. In some cases, the database can be configured according to a relational model and can be accessed according to Structured Query Language (SQL) standard. In some configurations, rich analysis of data in the database may be applied by a computing system that is separate from a system of database devices that form the database. Thus, analysis of data by the computing system may entail transporting source data from the database to a network location within the computing system. Such a transport of data may create issues related to time-consuming input/output operations over a network, for example. Additionally, the computing system may be a third-party system relative to the system of database devices. Hence, such a transport of data also can create issues related to undesired hosting of source data of the database by a third party. Risk of potential exposure of the source data also can be exacerbated by the transport of data between the database and computing system as part of the analysis. [0003] Therefore much remains to be improved in technologies for the analysis of data within a database. SUMMARY [0004] It is to be understood that both the following general description and the following detailed description are illustrative and explanatory only and are not restrictive. [0005] In one embodiment, the disclosure provides a computing system. The computing system includes at least one processor that executes computer-executable components stored in at least one memory device. The computer-executable components include a generator module configured to generate a client query based on one or more selections of respective visual elements in a user interface and a group of values corresponding to the one or more selections, each one of the group of values defines a filtering criterion. The computer- ATTORNEY DOCKET NO.: 36339.0051P1 executable components also include an adaptor module configured to transform the client query into a target query directly executable against a database, and causes execution of the target query. [0006] In another embodiment, the disclosure provides a computer-implemented method. The computer-implemented method also includes generating, based on a client query and a data model, a target query directly executable against a database. The computer-implemented method also includes causing execution of the target query against the database. [0007] Additional elements or advantages of this disclosure will be set forth in part in the description which follows, and in part will be apparent from the description, or may be learned by practice of the subject disclosure. The advantages of the subject disclosure can be attained by means of the elements and combinations particularly pointed out in the appended claims. [0008] This summary is not intended to identify critical or essential features of the disclosure, but merely to summarize certain features and variations thereof. Other details and features will be described in the sections that follow. Further, both the foregoing general description and the following detailed description are illustrative and explanatory only and are not restrictive of the embodiments of this disclosure. BRIEF DESCRIPTION OF THE DRAWINGS [0009] The annexed drawings are an integral part of the disclosure and are incorporated into the subject specification. The drawings illustrate example embodiments of the disclosure and, in conjunction with the description and claims, serve to explain at least in part various principles, elements, or aspects of the disclosure. Embodiments of the disclosure are described more fully below with reference to the annexed drawings. However, various elements of the disclosure can be implemented in many different forms and should not be construed as limited to the implementations set forth herein. Like numbers refer to like elements throughout. [0010] FIG.1 is a schematic diagram showing an embodiment of a system forming an implementation of the disclosed methods. [0011] FIG.2A is a set of tables showing exemplary Tables 1-5 of a simple database and associations between variables in the tables. [0012] FIG.2B illustrates exemplary handles built from Tables 1-5 of FIG.2A. [0013] FIG.3 is a schematic flowchart showing basic steps performed when extracting information from a database. ATTORNEY DOCKET NO.: 36339.0051P1 [0014] FIG.4 illustrates tables showing a final data structure, e.g. a multidimensional cube, created by evaluating mathematical functions. [0015] FIG.5A is a schematic diagram showing how a selection by a user operates on a scope to generate a data subset. [0016] FIG.5B is an overview of the relations between data model, indexes in disk and windowed view of disk indexes in memory. [0017] FIG.5C is a representation of the data structure used for table handling. [0018] FIG.5D is a table tree representation of a data model. [0019] FIG.5E illustrates an example application of bidirectional table indexes and bidirectional association indexes. [0020] FIG.6 is a schematic graphical presentation showing selections and a diagram of data associated to the selections as received after processing by an external engine. [0021] FIG.7 is a schematic representation of data exchanged with an external engine based on selections in FIG.6. [0022] FIG.8 is a schematic graphical presentation showing selections and a diagram of data associated to the selections as received after second computations from an external engine. [0023] FIG.9 is a schematic representation of data exchanged with an external engine based on selections in FIG.8. [0024] FIG.10 is a schematic graphical presentation showing selections and a diagram of data associated to the selections as received after third computations from an external engine. [0025] FIG.11 is a schematic representation of data exchanged with an external engine based on selections in FIG.10. [0026] FIG.12 is a table showing results from computations based on different selections in the presentation of FIG.10. [0027] FIG.13 is a schematic graphical presentation showing a further set of selections and a diagram of data associated to the selections as received after third computations from an external engine. [0028] FIG.14 illustrates an example of an operating environment for analyzing data in situ within a database, in accordance with one or more embodiments of this disclosure. [0029] FIG.15 illustrates an example of a computing system for generating a query to analyze data in situ within a database, in accordance with one or more embodiments of this disclosure. ATTORNEY DOCKET NO.: 36339.0051P1 [0030] FIG.16 illustrates an example of a module for transformation of a client query to a another query that is directly executable against a database, in accordance with one or more embodiments of this disclosure. [0031] FIG.17 illustrates examples of three graphical objects, in accordance with one or more embodiments of this disclosure. [0032] FIG.18 illustrates an example of a chart, an example of a table association diagram, and an example of a definition of an associative model (also referred to as an associative data model) relating the tables in the table association diagram, in accordance with one or more embodiments of this disclosure. [0033] FIG.19A illustrates an example of an associative model including associations among three tables, in accordance with one or more embodiments of this disclosure. [0034] FIG.19B illustrates an example of a chart and filtered fields associated with one- value selections, in accordance with one or more embodiments of the disclosure. [0035] FIG.20 illustrates an example of associated fields, in accordance with one or more embodiments of this disclosure. [0036] FIG.21 illustrates an example of a widget embodied in a key performance indicator (KPI) chart, in accordance with one or more embodiments of this disclosure. [0037] FIG.22 illustrates an example of table to determine a TOTAL quantifier without grouping columns, in accordance with one or more embodiments of this disclosure. [0038] FIG.23 illustrates an example of table to determine a Set Analysis quantifier, in accordance with one or more embodiments of this disclosure. [0039] FIG.24 illustrates an example of a method in accordance with one or more embodiments of this disclosure. [0040] FIG.25 illustrates another example of a method in accordance with one or more embodiments of this disclosure. [0041] FIG.26 illustrates an example of a computing system in accordance with one or more embodiments of this disclosure. DETAILED DESCRIPTION [0042] The disclosure recognizes and addresses, among other technical challenges, the issue of analysis of data within a database, without transporting the data from a source network location to another network location for analysis. Embodiments of this disclosure, include systems, devices, computer-implemented methods, and computer program products that, individually or in combination, permit implementing associative analysis of data in situ ATTORNEY DOCKET NO.: 36339.0051P1 within a database configured according to a defined data model and standard for queries probing the data. That is, the associative analysis of data can be applied to the data in an original storage location containing the data, without transferring the data to another storage location pertaining to an analysis system that performs the analysis. The other storage location can be a primary memory or cache. To implement the associative data analysis, a client query can be generated based on one or more selections of respective visual elements in a user interface and a group of values corresponding to the one or more selections. Additionally, the client query can be transformed into another query directly executable against a database containing the data to be analyzed. That other query can be referred as a target query and can then be executed for analysis of the data in situ within the database. The transformation of the client query into the target query is based on formalization of associative analysis logic as an algebra of Set Analysis operations and mapping of such operations onto a graph of operations according to the defined database standard (in terms of query language) for querying the database. The database can be configured according to a defined database model (e.g., relational model) and the defined database standard. In one example, the database can be configured according to a relational model and can be accessed according to Structured Query Language (SQL) standard. That is, the database can be embodied in a SQL database and, thus, the graph of operations can be a graph of SQL operations. [0043] Embodiments of the disclosure can provide various improvement over existing technologies for data analysis. For example, embodiments of the disclosure can process large amounts of data without uploading the data to primary memory or a cache, thus avoiding computationally time-consuming and bandwidth-intensive operations. As a result, embodiments of this disclosure can user computing resources more efficiently than existing technologies. In addition to avoiding the transfer of data from an original storage system to primary memory, embodiments of this disclosure avoid changes to a data representation of the data and/or the indexing of the data in a particular fashion. Hence, the associative analysis can be implemented flexibly and computationally efficiently. As another example, embodiments of the disclosure can provide an associative analysis without reliance on an inference engine. Thus, the rich analytic features of associative analysis can be implemented in any database system. To that point, while embodiments of this disclosure are described in connection with Structured Query Language (SQL) databases, the principles and practical applications of this disclosure can be applied to other types of databases, such as OnLine Analytic Processing (OLAP) databases and NoSQL databases. ATTORNEY DOCKET NO.: 36339.0051P1 [0044] In some aspects, the disclosed technologies can manage associations among data sets with every data point in the analytic dataset being associated with every other data point in the dataset. Datasets can be larger than hundreds of tables with thousands of fields. A multi-dimensional dataset or array of data is referred to as an OLAP cube. A cube can be considered a multi-dimensional generalization of a two- or three-dimensional spreadsheet. For example, it may be desired to summarize data by product, by time-period, and by city to compare actual expenses and budget expenses. Product, time, city, and scenario (actual and budget) can be referred to as dimensions. A multi-dimensional dataset is normally called a hypercube if the number of dimensions is greater than 3. A hypercube can comprise tuples made of two (or more) dimensions and one or more expressions. [0045] With reference to the drawings, FIG.1 illustrates an associative data indexing engine 100 with data flowing in from the left and operations starting from a script engine 104 and going clockwise (indicated by the clockwise arrow) to export features 118. Data from a data source 102 can be extracted by a script engine 104. The data source 102 can comprise any type of known database, such as relational databases, post-relational databases, object- oriented databases, hierarchical databases, flat files, spread sheet, etc. The Internet may also be regarded as a database in the context of the present disclosure. A visual interface can be used as an alternative or combined with a script engine 104. The script engine 104 can read record by record from the data source 102 and data can be stored or appended to symbol and data tables in an internal database 120. Read data can be referred to as a dataset. [0046] The associative data indexing engine 100 can include a mode of operation involving indexing techniques and a corresponding query language dialect. In an aspect, the extraction of the data can comprise extracting an initial dataset or scope from the data source 102, e.g. by reading the initial dataset into the primary memory (e.g., RAM) of the computer. The initial dataset can comprise the entire contents of the data source 102 base, or a subset thereof. The internal database 120 can comprise the extracted data and symbol tables. Symbol tables can be created for each field and, in one aspect, can only contain the distinct field values, each of which can be represented by their clear text meaning and a bit filled pointer. The data tables can contain said bit filled pointers. [0047] In the case of a query of the data source 102, a scope can be defined by the tables included in a SELECT statement (or equivalent) and how these are joined. In an aspect, the SELECT statement can be SQL based. For an Internet search, the scope can be an index of found web pages, for example, organized as one or more tables. A result of scope definition can be a dataset. ATTORNEY DOCKET NO.: 36339.0051P1 [0048] Once the data has been extracted, a user interface can be generated to facilitate dynamic display of the data. By way of example, a particular view of a particular dataset or data subset generated for a user can be referred to as a state space or a session. The methods and systems can dynamically generate one or more visual representations of the data to present in the state space. [0049] A user can make a selection in the dataset, causing a logical inference engine 106 to evaluate a number of filters on the dataset. In an aspect, a query on a database that holds data of placed orders, could be requesting results matching an order year of '1999' and a client group be ‘Nisse.’ The selection may thus be uniquely defined by a list of included fields and, for each field, a list of selected values or, more generally, a condition. Based on the selection, the logical inference engine 106 can generate a data subset that represents a part of the scope. The data subset may thus contain a set of relevant data records from the scope, or a list of references (e.g. indices, pointers, or binary numbers) to these relevant data records. The logical inference engine 106 can process the selection and can determine what other selections are possible based on the current selections. In an aspect, flags can enable the logical inference engine 106 to work out the possible selections. By way of example, two flags can be used: the first flag can represent whether a value is selected or not, the second can represent whether or not a value selection is possible. For every click in an application, states and colors for all field values can be calculated. These can be referred to as state vectors, which can allow for state evaluation propagation between tables. [0050] In another aspect, the query can comprise a selection query language. The query can be referred to as an associative analysis (AA) query. The selection query language can comprise a query language that operates on selection states of data, rather than on the actual data. In an aspect, one or more handles can be generated (e.g., in real-time or as part of data extraction). A handle can represent a selection state of all rows of all tables in the underlying data based on an attribute. FIG.2A illustrates example tables and associations between the tables. FIG.2B illustrates handles H1, H2, H3, and H4. Handle H1 represents selection states of all rows of Tables 1-5 based on a selection of “Kalle”. Handle H2 represents selection states of all rows of Tables 1-5 based on a selection of “Pekka”. Handle H3 represents selection states of all rows of Tables 1-5 based on a selection of “Sweden”. Handle H4 represents selection states of all rows of Tables 1-5 based on a selection of “Soap”. In the handles, each row can represent a table and each column can represent a row. For example, in the handle H1, the row associated with Table 1 contains a “1” in column 1, a “0” in columns 2-4, and an “x” in columns 5-7. As a result, handle H1 indicates that “Kalle” is associated ATTORNEY DOCKET NO.: 36339.0051P1 with row 1 in Table 1, “Kalle” is not associated with rows 2-4 in Table 1, and Table 1 does not contain rows 5-7. Note that an indication of “1”, “0”, and “x” is exemplary, and other values and/or symbols can be used. It should be understood that an indication of “1” does not indicate that the value represented by the handle is present in that row, but rather that the value is associated with that row. [0051] The selection query language disclosed herein can perform one or more operations, including SET HANDLE H (H0, HU special handles (no selection / none possible)), SELECT, WHERE, COMPLEMENT, UNION, INTERSECT, STATE(n), UPDATE, AGGR, SORT, SESSION, PAGE, IN, ON, WITH, FROM, combinations thereof, and the like. FIG.2B illustrates an example of an INTERSECT operation performed on H1 and H2. Unlike performance of an INTERSECT operation via traditional SQL which would return actual distinct rows by comparing the results of two queries, an INTERSECT operation performed on two handles returns another handle. As shown in FIG.2B, an INTERSECT of H1 and H2 results in handle H6. FIG.2B also illustrates the results of a UNION operation performed on handles H1 and H2, resulting in handle H6. [0052] FIG.2B illustrates an application of a SELECT statement via the selection query language. Consider the following statement, SELECT * FROM Data Model WHERE Country=Sweden AND Product=Soap. Traditional SQL would traverse all tables and all rows to identify and return each row that contains both “Sweden” and “Soap”. Such a traversal is both time and processor intensive. Applying the SELECT statement via the selection query language results in SELECT * FROM Data Model WHERE H3 AND H4 (which consequently can be expressed as INTERSECT (H3:H4)), resulting in generation of handle H7. [0053] FIG.2B illustrates another application of a SELECT statement via the selection query language. Consider the following statement, SELECT * FROM Table 2 WHERE Country=Sweden OR Product=Soap. Traditional SQL would traverse all rows of Table 2 to identify and return each row that contains both “Sweden” and “Soap”. Applying the SELECT statement via the selection query language results in SELECT * FROM Table 2 WHERE H3 OR H4, resulting in generation of handle H8. [0054] SET HANDLE H1 = SELECT Client = “Kalle” IN HU [0055] SET HANDLE H3 = SELECT Client = “Sweden” IN HU [0056] The selection query language can be used to generate a handle for a hypercube. For example, SET HCUBE HC1 = AGGR SUM(Number*Price) WITH Client,Year on HU. Such a query can generate a handle for a hypercube “HC1” that represents results of the ATTORNEY DOCKET NO.: 36339.0051P1 mathematical function (“SUM(Price*Number)”) based on the results of the mathematical expression (“Price*Number”), as applied to the entire dataset “HU”. HU can be a handle that represents the universe of data. The underlying data from the query can be obtained (e.g., fetched) via a PAGE operation. For example, PAGE HC1 OFFSET 0 LENGTH ALL can return the actual data values represented by the handle “HC1”, the output of which is shown in Table 6 of FIG.4. The PAGE operation can be used to customize which values are fetched. For example, PAGE HC1 OFFSET 0 LENGTH 2 can return the actual data values in the first two rows in Table 6 of FIG.4. [0057] In another example, the selection query language can be used to generate a handle for a hypercube based on other handles. For example, SET HCUBE HC2 = AGGR SUM(Number*Price) WITH Client,Year on INTERSECT(H1,H3). Such a query can generate a handle for a hypercube “HC2” that represents results of the mathematical function (“SUM(Price*Number)”) based on the results of the mathematical expression (“Price*Number”), as applied to the intersection of handles H1 and H3. The underlying data from the query can be obtained (e.g., fetched) via a PAGE operation. For example, PAGE HC2 OFFSET 0 LENGTH ALL can return the actual data values represented by the handle “HC2”, the output of which is shown in Table 8 of FIG.4. [0058] The PAGE operation can be used to fetch customized values from one or more handles, operations on handles, and/or the entire dataset. For example, PAGE Client OFFSET 0 LENGTH 2 can return the actual data values from the entire dataset to which it is applied. The actual data values returned based on the example query would be the first two entries on the field “Client”. As applied to the tables in FIG.2, the values returned would be rows 1 and 2 from Table 2 as Table 2 is the first table that would be loaded that contains the field “Client”. [0059] Another example of a PAGE operation is PAGE Client OFFSET 0 LENGTH 2 WITH STATE=Active ON COMPLEMENT H1. Such a PAGE operation would determine the first two entries on the field “Client” retrieved from the complement of H1 having an “Active” (e.g., “1”) state. The complement of H1 represents inverted state values of the handle H1. The complement of H1 is shown in FIG.2B as H9, although creation of a separate handle H9 is not necessary to the processing of the PAGE operation. The only tables in FIG.2A that contain values for the field “Client” are Table 2 and Table 4. As shown in handle H9, as applied to the tables in FIG.2A, the active values in the rows for Table 2 and Table 4 represent underlying data values for Table 2: rows 1, 2, 5, and 6 and for Table 4: rows 2, 3, and 4. However, as the PAGE operation requested the first two rows, the actual ATTORNEY DOCKET NO.: 36339.0051P1 data values returned would be rows 1 and 2 from Table 2, as Table 2 is loaded before Table 4. [0060] The selection query language can be used to perform set analysis. Set analysis is a method of defining a set of data values that is different from a set defined by current selections. Set analysis can comprise an aggregation on a field with a condition. An example of set analysis can be SUM(${<Year={1999}>}(Price*Number)) which would provide a sum of all sales in 1999, the sum being updated based on user selections (defined as “$” to respect current selections, “1” to ignore current selections, and 1-$ to use records excluded by current selections). The set analysis would output the total sales in 1999, and if the user selected “Nisse” for example, the total sales in 1999 would be adjusted down to reflect only those sales in 1999 related to “Nisse”. [0061] An example of applying selection query language to set analysis is the following operations, SET HCUBE HCT = AGGR SUM(Number*Price) on HU which can create a handle for a hypercube “HCT” that represents results of the mathematical function (“SUM(Price*Number)”) based on the results of the mathematical expression (“Price*Number”), as applied to all data “HU”. A user selection of “Kalle” and “Sweden” can result in a follow on operation SET HCUBE HC% = AGGR 100*SUM(Number*Price)/HCT on INTERSECT(H1,H3) that can be executed to create a handle “HC%” for a hypercube that represents the determination of the percentage of sales related to “Kalle” and “Sweden” (INTERSECT(H1,H3)). The actual underlying data values can be fetched with a PAGE operation such as PAGE HC% OFFSET 0 LENGTH ALL. [0062] The logical inference engine 106 can utilize an associative model to connect data. In the associative model, all the fields in the data model have a logical association with every other field in the data model. An example, data model 501 is shown in FIG.5B. The data model 501 illustrates connections between a plurality of tables which represent logical associations. Depending on the amount of data, the data model 501 can be too large to be loaded into memory. To address this issue, the logical inference engine 106 can generate one or more indexes for the data model. The one or more indexes can be loaded into memory in lieu of the data model 501. The one or more indexes can be used as the associative model. An index is used by database management programs to provide quick and efficient associative access to a table’s records. An index is a data structure (for example, a B-tree, a hash table, and the like) that stores attributes (e.g., values) for a specific column in a table. A B-tree is a self-balancing tree data structure that keeps data sorted and allows searches, sequential access, insertions, and deletions in logarithmic time. The B-tree is a generalization of a binary ATTORNEY DOCKET NO.: 36339.0051P1 search tree in that a node can have more than two children. A hash table (also referred to as a hash index) can comprise a collection of buckets organized in an array. A hash function maps index keys to corresponding buckets in the hash index. [0063] Queries that compare for equality to a string can retrieve values very fast using a hash index. For instance, referring to the tables of FIG.2A, a query of (in SQL: SELECT * FROM Table 2 WHERE Client = ‘Kalle’ or in selection query language: SELECT * FROM Table 2 WHERE H1) could benefit from a hash index created on the Client column. In this example, the hash index would be configured such that the column value will be the key into the hash index and the actual value mapped to that key would just be a pointer to the row data in Table 2. Since a hash index is an associative array, a typical entry can comprise “Kalle => 0x29838”, where 0x29838 is a reference to the table row where Kalle is stored in memory. Thus, looking up a value of “Kalle” in a hash index can return a reference to the row in memory which is faster than scanning Table 2 to find all rows with a value of “Kalle” in the Client column. The pointer to the row data enables retrieval of other values in the row. [0064] As shown in FIG.5B, the logical inference engine 106 can be configured for generating one or more bidirectional table indexes (BTI) 502a, 502b, 502c, 502d, and/or 502e and one or more bidirectional associative indexes (BAI) 503a, 503b, 503c and/or 503d based on a data model 501. The logical inference engine 106 can scan each table in the data model 501 and create the BTI 502a, 502b, 502c, 502d, and/or 502e. A BTI can be created for each column of each table in the data. The BTI 502a, 502b, 502c, 502d, and/or 502e can comprise a hash index. The BTI 502a, 502b, 502c, 502d, and/or 502e can comprise first attributes and pointers to the table rows comprising the first attributes. For example, referring to the tables of FIG.2, an example BTI 502a can comprise “Kalle => 0x29838”, where Kalle is an attribute found in Table 2 and 0x29838 is a reference to the row in Table 2 where Kalle is stored in memory. Thus, the BTI 502a, 502b, 502c, 502d, and/or 502e can be used to determine other attributes in other columns (e.g., second attributes, third attributes, etc...) in table rows comprising the first attributes. Accordingly, the BTI can be used to determine that an association exists between the first attributes and the other attributes. [0065] The logical inference engine 106 can scan one or more of BTI 502a, 502b, 502c, 502d, and/or 502e and create the BAI 503a, 503b, 503c and/or 503d. The BAI 503a, 503b, 503c and/or 503d can comprise a hash index. The BAI 503a, 503b, 503c and/or 503d can comprise an index configured for connecting attributes in a first table to common columns in a second table. The BAI 503a, 503b, 503c and/or 503d thus allows for identification of rows in the second table which then permits identification of other attributes in other tables. For example, referring to the tables of FIG.2, ATTORNEY DOCKET NO.: 36339.0051P1 an example BAI 503a can comprise “Kalle => 0x39838”, where Kalle is an attribute found in Table 2 and 0x39838 is a reference to a row in Table 4 that contains Kalle. In an aspect, the reference can be to a hash that can be in-memory storage or on disk. [0066] Using the BTI 502a, 502b, 502c, 502d, and/or 502e and the BAI 503a, 503b, 503c, and/or 503d, the logical inference engine 106 can generate an index window 504 by taking a portion of the data model 501 and mapping it into memory. The portion of the data model 501 taken into memory can be sequential (e.g., not random). The result is a significant reduction in the size of data required to be loaded into memory. [0067] Thus, the logical inference engine 106 can determine a data subset based on user selections. The logical inference engine 106 automatically maintains associations among every piece of data in the entire dataset used in an application. The logical inference engine 106 can store the binary state of every field and of every data table dependent on user selection (e.g., included or excluded). This can be referred to as a state space and can be updated by the logical inference engine 106 every time a selection is made. There is one bit in the state space for every value in the symbol table or row in the data table, as such the state space is smaller than the data itself and faster to query.The inference engine can work associating values or binary symbols into the dimension tuples. Dimension tuples are normally needed by a hypercube to produce a result. [0068] The associations thus created by the logical inference engine 106 means that when a user makes a selection, the logical inference engine 106 can resolve (quickly) which values are still valid (e.g., possible values) and which values are excluded. The user can continue to make selections, clear selections, and make new selections, and the logical inference engine 106 can continue to present the correct results from the logical inference of those selections. In contrast to a traditional join model database, the associative model provides an interactive associative experience to the user. [0069] FIG.5C, illustrates an example application of one or more BTIs. User input 504 can be received that impacts a selection of one or more attribute states 506. Attribute states 506 can correspond to selection by a user of one or more attributes (e.g., values) found in Column 1 of Table X. In an aspect, the one or more attributes of Table X can comprise a hash of each respective attribute. One or more BTI’s 508 can be accessed to determine one or more rows in Table X that comprise the attributes selected by the user. Row states 510 can correspond to selection of one or more rows found in Table X that comprise the one or more selected attributes. An inverted index 512 of Column 2 can be accessed to identify which rows of Table 1 comprise associated attributes. Attribute states 514 for Column 2 can be ATTORNEY DOCKET NO.: 36339.0051P1 updated to reflect the associated attributes of Column 2. One or more BTI’s 518 can be further accessed to determine other associated attributes in other columns as needed. Attribute states 514 can be applied to other tables via one or more BAIs. FIG.5D illustrates an example of relationships identified by one or more BAIs. [0070] FIG.5E illustrates an example application of BTI’s and BAI’s to determine inferred states both inter-table and intra-table using Table 1 and Table 2 of FIG.2. A BTI 520 can be generated for the “Client” attribute of Table 2. In an aspect, the BTI 520 can comprise an inverted index 521. In other aspect, the inverted index 521 can be considered a separate structure. The BTI 520 can comprise a row for each unique attribute in the “Client” column of Table 2. Each unique attribute can be assigned a corresponding position 522 in the BTI 520. In an aspect, the BTI 520 can comprise a hash for each unique attribute. The BTI 520 can comprise a column 523 for each row of Table 2. For each attribute, a “1” can indicate the presence of the attribute in the row and a “0” can indicate an absence of the attribute from the row. “0” and “1” are merely examples of values used to indicate presence or absence. Thus, the BTI 520 reflects that the attribute “Nisse” is found in rows 1 and 6 of Table 2, the attribute “Gullan” is found in row 2 of Table 2, the attribute “Kalle” is found in rows 3 and 4 of Table 2, and the attribute “Pekka” is found in row 5 of Table 2. [0071] The inverted index 521 can be generated such that each position in the inverted index 521 corresponds to a row of Table 2 (e.g., first position corresponds to row 1, second position corresponds to row 2, etc…). A value can be entered into each position that reflects the corresponding position 522 for each attribute. Thus, in the inverted index 521, position 1 comprises the value “1” which is the corresponding position 522 value for the attribute “Nisse”, position 2 comprises the value “2” which is the corresponding position 522 value for the attribute “Gullan”, position 3 comprises the value “3” which is the corresponding position 522 value for the attribute “Kalle”, position 4 comprises the value “3” which is the corresponding position 522 value for the attribute “Kalle”, position 5 comprises the value “4” which is the corresponding position 522 value for the attribute “Pekka”, and position 6 comprises the value “1” which is the corresponding position 522 value for the attribute “Nisse”. [0072] A BTI 524 can be generated for the “Product” attribute of Table 2. In an aspect, the BTI 524 can comprise an inverted index 525. In other aspect, the inverted index 525 can be considered a separate structure. The BTI 524 can comprise a row for each unique attribute in the “Product” column of Table 2. Each unique attribute can be assigned a corresponding position 526 in the BTI 524. In an aspect, the BTI 524 can comprise a hash for each unique ATTORNEY DOCKET NO.: 36339.0051P1 attribute. The BTI 524 can comprise a column 527 for each row of Table 2. For each attribute, a “1” can indicate the presence of the attribute in the row and a “0” can indicate an absence of the attribute from the row. “0” and “1” are merely examples of values used to indicate presence or absence. Thus, the BTI 524 reflects that the attribute “Toothpaste” is found in row 1 of Table 2, the attribute “Soap” is found in rows 2, 3, and 5 of Table 2, and the attribute “Shampoo” is found in rows 4 and 6 of Table 2. [0073] By way of example, the inverted index 525 can be generated such that each position in the inverted index 525 corresponds to a row of Table 2 (e.g., first position corresponds to row 1, second position corresponds to row 2, etc…). A value can be entered into each position that reflects the corresponding position 526 for each attribute. Thus, in the inverted index 525, position 1 comprises the value “1” which is the corresponding position 526 value for the attribute “Toothpaste”, position 2 comprises the value “2” which is the corresponding position 526 value for the attribute “Soap”, position 3 comprises the value “2” which is the corresponding position 526 value for the attribute “Soap”, position 4 comprises the value “3” which is the corresponding position 526 value for the attribute “Shampoo”, position 5 comprises the value “2” which is the corresponding position 526 value for the attribute “Soap”, and position 6 comprises the value “3” which is the corresponding position 526 value for the attribute “Shampoo”. [0074] By way of example, a BTI 528 can be generated for the “Product” attribute of Table 1. In an aspect, the BTI 528 can comprise an inverted index 529. In other aspect, the inverted index 529 can be considered a separate structure. The BTI 528 can comprise a row for each unique attribute in the “Product” column of Table 1. Each unique attribute can be assigned a corresponding position 530 in the BTI 528. In an aspect, the BTI 528 can comprise a hash for each unique attribute. The BTI 528 can comprise a column 531 for each row of Table 1. For each attribute, a “1” can indicate the presence of the attribute in the row and a “0” can indicate an absence of the attribute from the row. “0” and “1” are merely examples of values used to indicate presence or absence. Thus, the BTI 528 reflects that the attribute “Soap” is found in row 1 of Table 1, the attribute “Soft Soap” is found in row 2 of Table 1, and the attribute “Toothpaste” is found in rows 3 and 4 of Table 1. [0075] By way of example, the inverted index 529 can be generated such that each position in the inverted index 529 corresponds to a row of Table 1 (e.g., first position corresponds to row 1, second position corresponds to row 2, etc…). A value can be entered into each position that reflects the corresponding position 530 for each attribute. Thus, in the inverted index 529, position 1 comprises the value “1” which is the corresponding position ATTORNEY DOCKET NO.: 36339.0051P1 530 value for the attribute “Soap”, position 2 comprises the value “2” which is the corresponding position 530 value for the attribute “Soft Soap”, position 3 comprises the value “3” which is the corresponding position 530 value for the attribute “Toothpaste”, and position 4 comprises the value “3” which is the corresponding position 530 value for the attribute “Toothpaste”. [0076] By way of example, a BAI 532 can be generated as an index between the product attribute of Table 2 and Table 1. The BAI 532 can comprise a row for each unique attribute in the BTI 524 by order of corresponding position 526. The value in each row can comprise the corresponding position 530 of the BTI 528. Thus, position 1 of the BAI 532 corresponds to “Toothpaste” in the BTI 524 (corresponding position 526 of 1) and comprises the value “3” which is the corresponding position 530 for “Toothpaste” of the BTI 528. Position 2 of the BAI 532 corresponds to “Soap” in the BTI 524 (corresponding position 526 of 2) and comprises the value “1” which is the corresponding position 530 for “Soap” of the BTI 528. Position 3 of the BAI 532 corresponds to “Shampoo” in the BTI 524 (corresponding position 526 of 3) and comprises the value “-1” which indicates that the attribute “Shampoo” is not found in Table 1. [0077] By way of example, a BAI 533 can be created to create an index between the product attribute of Table 1 and Table 2. The BAI 533 can comprise a row for each unique attribute in the BTI 528 by order of corresponding position 530. The value in each row can comprise the corresponding position 526 of the BTI 524. Thus, position 1 of the BAI 533 corresponds to “Soap” in the BTI 528 (corresponding position 530 of 1) and comprises the value “2” which is the corresponding position 526 for “Soap” of the BTI 524. Position 2 of the BAI 533 corresponds to “Soft Soap” in the BTI 528 (corresponding position 530 of 2) and comprises the value “-1” which indicates that the attribute “Soft Soap” is not found in Table 2. Position 3 of the BAI 533 corresponds to “Toothpaste” in the BTI 528 (corresponding position 530 of 3) and comprises the value “1” which is the corresponding position 526 for “Toothpaste” of the BTI 524. [0078] FIG.5E illustrates an example application of the logical inference engine 106 utilizing the BTI 520, the BTI 524, and the BTI 528. A user can select the “Client” “Kalle” from within a user interface. A column for a user selection 534 of “Kalle” can be indicated in the BTI 520 comprising a value for each attribute that reflects the selection status of the attribute. Thus, the user selection 534 comprises a value of “0” for the attribute “Nisse” indicating that “Nisse” is not selected, the user selection 534 comprises a value of “0” for the attribute “Gullan” indicating that “Gullan” is not selected, the user selection 534 comprises a ATTORNEY DOCKET NO.: 36339.0051P1 value of “1” for the attribute “Kalle” indicating that “Kalle” is selected, and the user selection 534 comprises a value of “0” for the attribute “Pekka” indicating that “Pekka” is not selected. [0079] The BTI 520 can be consulted to determine that the attribute “Kalle” has a value of “1” in the column 523 corresponding to rows 3 and 4. In an aspect, the inverted index 521 can be consulted to determine that the user selection 534 relates to the position 522 value of “3” which is found in the inverted index 521 at positions 3 and 4, implicating rows 3 and 4 of Table 1. Following path 535, a row state 536 can be generated to reflect the user selection 534 as applied to the rows of Table 2. The row state 536 can comprise a position that corresponds to each row and a value in each position reflecting whether a row was selected. Thus, position 1 of the row state 536 comprises the value “0” indicating that row 1 does not contain “Kalle”, position 2 of the row state 536 comprises the value “0” indicating that row 2 does not contain “Kalle”, position 3 of the row state 536 comprises the value “1” indicating that row 3 does contain “Kalle”, position 4 of the row state 536 comprises the value “1” indicating that row 4 does contain “Kalle”, position 5 of the row state 536 comprises the value “0” indicating that row 5 does not contain “Kalle”, and position 6 of the row state 536 comprises the value “0” indicating that row 6 does not contain “Kalle”. [0080] Following path 537, the row state 536 can be compared with the inverted index 525 to determine the corresponding position 526 contained in the inverted index 525 at positions 3 and 4. The inverted index 525 comprises the corresponding position 526 value of “2” in position 3 and the corresponding position 526 value of “3” in position 4. Following path 538, the corresponding position 526 values of “2” and “3” can be determined to correspond to “Soap” and “Shampoo” respectively in the BTI 524. Thus, the logical inference engine 106 can determine that both “Soap” and “Shampoo” in Table 2 are associated with “Kalle” in Table 2. The association can be reflected in an inferred state 539 in the BTI 524. The inferred state 539 can comprise a column with a row for each attribute in the BTI 524. The column can comprise a value indicated the selection state for each attribute. The inferred state 539 comprises a “0” for “Toothpaste” indicating that “Toothpaste” is not associated with “Kalle”, the inferred state 539 comprises a “1” for “Soap” indicating that “Soap” is associated with “Kalle”, and inferred state 539 comprises a “1” for “Shampoo” indicating that “Shampoo” is associated with “Kalle”. [0081] Following path 540, the inferred state 539 can be compared to the BAI 532 to determine one or more associations between the selection of “Kalle” in Table 2 and one or more attributes in Table 1. As the inferred state 539 comprises a value of “1” in both position 2 and position 3, the BAI 532 can be assessed to determine the values contained in position 2 ATTORNEY DOCKET NO.: 36339.0051P1 and position 3 of the BAI 532 (following path 541). Position 2 of the BAI 532 comprises the value “1” which identifies the corresponding position 530 of “Soap” and position 3 of the BAI 532 comprises the value “-1” which indicates that Table 1 does not contain “Shampoo”. Thus, the logical inference engine 106 can determine that “Soap” in Table 1 is associated with “Kalle” in Table 2. The association can be reflected in an inferred state 542 in the BTI 528. The inferred state 542 can comprise a column with a row for each attribute in the BTI 528. The column can comprise a value indicated the selection state for each attribute. The inferred state 542 comprises a “1” for “Soap” indicating that “Soap” is associated with “Kalle”, the inferred state 542 comprises a “0” for “Soft Soap” indicating that “Soft Soap” is not associated with “Kalle”, and the inferred state 542 comprises a “0” for “Toothpaste” indicating that “Toothpaste” is not associated with “Kalle”. Based on the current state of BTIs and BAIs, if the data sources 102 indicate that an update or delta change has occurred to the underlying data, the BTIs and BAIs can be updated with corresponding changes to maintain consistency. [0082] Based on current selections and possible rows in data tables a calculation/chart engine 108 can calculate aggregations in objects forming transient hyper cubes in an application. The calculation/chart engine 108 can further build a virtual temporary table from which aggregations can be made. The calculation/chart engine 108 can perform a calculation (e.g., evaluate an expression in response to a user selection/deselection) via a multithreaded operation. The state space can be queried to gather all of the combinations of dimensions and values necessary to perform the calculation. In an aspect, the query can be on one thread per object, one process, one worker, combinations thereof, and the like. The expression can be calculated on multiple threads per object. Results of the calculation can be passed to a rendering engine 116 and/or optionally to an extension engine 110. [0083] Optionally, the extension engine 110 can be implemented to communicate data via an interface 112 to an external engine 114. In another aspect, the extension engine 110 can communicate data, metadata, a script, a reference to one or more artificial neural networks (ANNs), one or more commands to be executed, one or more expressions to be evaluated, combinations thereof, and the like to the external engine 114. The interface 112 can comprise, for example, an Application Programming Interface (API). The external engine 114 can comprise one or more data processing applications (e.g., simulation applications, statistical applications, mathematical computation applications, database applications, combinations thereof, and the like). The external engine 114 can be, for example, one or more of MATLAB®, R, Maple®, Mathematica®, combinations thereof, and the like. ATTORNEY DOCKET NO.: 36339.0051P1 [0084] In an aspect, the external engine 114 can be local to the associative data indexing engine 100 or the external engine 114 can be remote from the associative data indexing engine 100. The external engine 114 can perform additional calculations and transmit the results to the extension engine 110 via the interface 112. A user can make a selection in the data model of data to be sent to the external engine 114. The logical inference engine 106 and/or the extension engine 110 can generate data to be output to the external engine 114 in a format to which the external engine 114 is accustomed to processing. In an example application, tuples forming a hypercube can comprise two dimensions and one expression, such as (Month, Year, Count (ID)), ID being a record identification of one entry. Then said tuples can be exchanged with the external engine 114 through the interface 112 as a table. If the data comprise births there can be timestamps of the births and these can be stored as month and year. If a selection in the data model will give a set of month-year values that are to be sent out to an external unit, the logical inference engine 106 and/or the extension engine 110 can ripple that change to the data model associatively and produce the data (e.g., set and/or values) that the external engine 114 needs to work with. The set and/or values can be exchanged through the interface 112 with the external engine 114. The external engine 114 can comprise any method and/or system for performing an operation on the set and/or values. In an aspect, operations on the set and/or values by the external engine 114 can be based on tuples (aggregated or not). In an aspect, operations on the set and/or values by the external engine 114 can comprise a database query based on the tuples. Operations on the set and/or values by the external engine 114 can be any transformation/operation of the data as long as the cardinality of the result is consonant to the sent tuples/hypercube result. [0085] In an aspect, tuples that are transmitted to the external engine 114 through the interface 112 can result in different data being received from the external engine 114 through the interface 112. For example, a tuple consisting of (Month, Year, Count (ID)) should return as 1-to-1, m-to-1 (where aggregations are computed externally) or n-to-n values. If data received are not what were expected, association can be lost. Transformation of data by the external engine 114 can be configured such that cardinality of the results is consonant to the sent tuples and/or hypercube results. The amount of values returned can thus preserve associativity. [0086] Results received by the extension engine 110 from the external engine 114 can be appended to the data model. In an aspect, the data can be appended to the data model without intervention of the script engine 104. Data model enrichment is thus possible “on the fly.” A natural work flow is available allowing clicking users to associatively extend the data. The ATTORNEY DOCKET NO.: 36339.0051P1 methods and systems disclosed permit incorporation of user implemented functionality into a presently used work flow. Interaction with third party complex computation engines, such as MATLAB® or R, is thus facilitated. [0087] The logical inference engine 106 can couple associated results to the external engine 114 within the context of an already processed data model. The context can comprise tuple or tuples defined by dimensions and expressions computed by hypercube routines. Association is used for determination of which elements of the present data model are relevant for the computation at hand. Feedback from the external engine 114 can be used for further inference inside the inference engine or to provide feedback to the user. [0088] In an aspect, one or more handles that were generated prior to receiving results from the external engine 114 can be updated after the results have been appended to the data model. For example, if one or more values in one or more tables changes because of the results from the external engine 114, an UPDATE operation can be performed to refresh the handles to reflect changes in the underlying data. [0089] A rendering engine 116 can produce a desired graphical object (charts, tables, etc.) based on selections/calculations. When a selection is made on a rendered object there can be a repetition of the process of moving through one or more of the logical inference engine 106, the calculation/chart engine 108, the extension engine 110, the external engine 114, and/or the rendering engine 116. The user can explore the scope by making different selections, by clicking on graphical objects to select variables, which causes the graphical object to change. At every time instant during the exploration, there exists a current state space, which is associated with a current selection state that is operated on the scope (which always remains the same). [0090] Different export features or tools 118 can be used to publish, export or deploy any output of the associative data indexing engine 100. Such output can be any form of visual representation, including, but not limited to, textual, graphical, animation, audio, tactile, and the like. The visual representation can include one or more graphical objects, each formatted according to a respective data visualization format and containing graphical elements (such as lines, blocks, circles, text, and the like). A data visualization format defines type(s), arrangement(s), and/or attribute(s) of the graphical visual elements. Simply as an illustration, a data visualization format can be one of a chart format, a table format, a plot format, a KPI format, treeman format, a geochart format, and similar formats. [0091] An example database, as shown in FIG.2, can comprise a number of data tables (Tables 1-5). Each data table can contain data values of a number of data variables. For ATTORNEY DOCKET NO.: 36339.0051P1 example, in Table 1 each data record contains data values of the data variables “Product,” “Price,” and “Part.” If there is no specific value in a field of the data record, this field is considered to hold a NULL-value. Similarly, in Table 2 each data record contains values of the variables “Date,” “Client,” “Product,” and “Number.” In Table 3 each data record contains values of variable “Date” as “Year,” “Month” and “Day.” In Table 4 each data record contains values of variables “Client” and “Country,” and in Table 5 each data record contains values of variables “Country,” “Capital,” and “Population.” Typically, the data values are stored in the form of ASCII-coded strings, but can be stored in any form. [0092] The methods disclosed herein can be implemented by means of a computer program as illustrated in a flowchart of a method 300 in FIG.3. In a step 302, the program can read some or all data records in the database, for instance using a SELECT statement which selects all the tables of the database, e.g. Tables 1-5. In an aspect, the database can be read into primary memory of a computer. [0093] To increase evaluation speed, each unique value of each data variable in said database can be assigned a different binary code and the data records can be stored in binary- coded form. This can be performed, for example, when the program first reads the data records from the database. For each input table, the following steps can be carried out. The column names, e.g. the variables, of the table can be read (e.g., successively). Every time a new data variable appears, a data structure can be instantiated for the new data variable. An internal table structure can be instantiated to contain some or all the data records in binary form, whereupon the data records can be read (e.g., successively) and binary-coded. For each data value, the data structure of the corresponding data variable can be checked to establish if the value has previously been assigned a binary code. If so, that binary code can be inserted in the proper place in the above-mentioned table structure. If not, the data value can be added to the data structure and assigned a new binary code, for example the next binary code in ascending order, before being inserted in the table structure. In other words, for each data variable, a unique binary code can be assigned to each unique data value. [0094] After having read some or all data records in the database, the program can analyze the database in a step 304 to identify all connections between the data tables. A connection between two data tables means that these data tables have one variable in common. In an aspect, step 304 can comprise generation of one or more bidirectional table indexes and one or more bidirectional associative indexes. In an aspect, generation of one or more bidirectional table indexes and one or more bidirectional associative indexes can comprise a separate step. In another aspect, generation of one or more bidirectional table ATTORNEY DOCKET NO.: 36339.0051P1 indexes and one or more bidirectional associative indexes can be on demand. After the analysis, all data tables are virtually connected. In FIG.2, such virtual connections are illustrated by double ended arrows. The virtually connected data tables can form at least one so-called “snowflake structure,” a branching data structure in which there is one and only one connecting path between any two data tables in the database. Thus, a snowflake structure does not contain any loops. If loops do occur among the virtually connected data tables, e.g. if two tables have more than one variable in common, a snowflake structure can in some cases still be formed by means of special algorithms known in the art for resolving such loops. [0095] After this initial analysis, the user can explore the database. In doing so, the user defines in a step 306 a mathematical function, which could be a combination of mathematical expressions. Assume that the user wants to extract the total sales per year and client from the database in FIG.2. The user defines a corresponding mathematical function "SUM (x*y)", and selects the calculation variables to be included in this function: “Price” and “Number.” The user also selects the classification variables: “Client” and “Year.” [0096] The computer program then identifies in a step 308 all relevant data tables, e.g. all data tables containing any one of the selected calculation and classification variables, such data tables being denoted boundary tables, as well as intermediate data tables in the connecting path(s) between these boundary tables in the snowflake structure, such data tables being denoted connecting tables. There are no connecting tables in the present example. In an aspect, one or more bidirectional table indexes and one or more bidirectional associative indexes can be accessed as part of step 308. [0097] In the present example, all occurrences of every value, e.g. frequency data, of the selected calculation variables can be included for evaluation of the mathematical function. In FIG.2, the selected variables (“Price,” “Number”) can require such frequency data. Now, a subset (B) can be defined that includes all boundary tables (Tables 1-2) containing such calculation variables and any connecting tables between such boundary tables in the snowflake structure. It should be noted that the frequency requirement of a particular variable is determined by the mathematical expression in which it is included. Determination of an average or a median calls for frequency information. In general, the same is true for determination of a sum, whereas determination of a maximum or a minimum does not require frequency data of the calculation variables. It can also be noted that classification variables in general do not require frequency data. ATTORNEY DOCKET NO.: 36339.0051P1 [0098] Then, a starting table can be selected in a step 310, for example, among the data tables within subset (B). In an aspect, the starting table can be the data table with the largest number of data records in this subset. In FIG.2, Table 2 can be selected as the starting table. Thus, the starting table contains selected variables ("Client," "Number"), and connecting variables ("Date," "Product"). These connecting variables link the starting table (Table 2) to the boundary tables (Tables 1 and 3). [0099] Thereafter, a conversion structure can be built in a step 312. This conversion structure can be used for translating each value of each connecting variable (“Date,” “Product”) in the starting table (Table 2) into a value of a corresponding selected variable (“Year,” “Price”) in the boundary tables (Table 3 and 1, respectively). A table of the conversion structure can be built by successively reading data records of Table 3 and creating a link between each unique value of the connecting variable (“Date”) and a corresponding value of the selected variable (“Year”). It can be noted that there is no link from value 4 ("Date: 1999-01-12"), since this value is not included in the boundary table. Similarly, a further table of the conversion structure can be built by successively reading data records of Table 1 and creating a link between each unique value of the connecting variable (“Product”) and a corresponding value of the selected variable (“Price”). In this example, value 2 (“Product: Toothpaste”) is linked to two values of the selected variable (“Price: 6.5”), since this connection occurs twice in the boundary table. Thus, frequency data can be included in the conversion structure. Also note that there is no link from value 3 (“Product: Shampoo”). [00100] When the conversion structure has been built, a virtual data record can be created. Such a virtual data record accommodates all selected variables (“Client,” “Year,” “Price,” “Number”) in the database. In building the virtual data record, a data record is read in a step 314 from the starting table (Table 2). Then, the value of each selected variable (“Client”, “Number”) in the current data record of the starting table can be incorporated in the virtual data record in a step 316. Also, by using the conversion structure each value of each connecting variable (“Date”, “Product”) in the current data record of the starting table can be converted into a value of a corresponding selected variable (“Year”, “Price”), this value also being incorporated in the virtual data record. [00101] In a step 318 the virtual data record can be used to build an intermediate data structure. Each data record of the intermediate data structure can accommodate each selected classification variable (dimension) and an aggregation field for each mathematical expression implied by the mathematical function. The intermediate data structure can be built based on the values of the selected variables in the virtual data record. Thus, each mathematical ATTORNEY DOCKET NO.: 36339.0051P1 expression can be evaluated based on one or more values of one or more relevant calculation variables in the virtual data record, and the result can be aggregated in the appropriate aggregation field based on the combination of current values of the classification variables (“Client,” “Year”). [00102] The above procedure can be repeated for one or more additional (e.g., all) data records of the starting table. In a step 320 it can be checked whether the end of the starting table has been reached. If not, the process can be repeated from step 314 and further data records can be read from the starting table. Thus, an intermediate data structure can be built by successively reading data records of the starting table, by incorporating the current values of the selected variables in a virtual data record, and by evaluating each mathematical expression based on the content of the virtual data record. If the current combination of values of classification variables in the virtual data record is new, a new data record can be created in the intermediate data structure to hold the result of the evaluation. Otherwise, the appropriate data record is rapidly found, and the result of the evaluation is aggregated in the aggregation field. [00103] Thus, data records can be added to the intermediate data structure as the starting table is traversed. The intermediate data structure can be a data table associated with an efficient index system, such as an AVL or a hash structure. The aggregation field can be implemented as a summation register, in which the result of the evaluated mathematical expression is accumulated. [00104] In some aspects, e.g. when evaluating a median, the aggregation field can be implemented to hold all individual results for a unique combination of values of the specified classification variables. It should be noted that only one virtual data record is needed in the procedure of building the intermediate data structure from the starting table. Thus, the content of the virtual data record can be updated for each data record of the starting table. This can minimize the memory requirement in executing the computer program. [00105] After traversing the starting table, the intermediate data structure can contain a plurality of data records. If the intermediate data structure accommodates more than two classification variables, the intermediate data structure can, for each eliminated classification variable, contain the evaluated results aggregated over all values of this classification variable for each unique combination of values of remaining classification variables. [00106] When the intermediate data structure has been built, a final data structure, e.g., a multidimensional cube, as shown in non-binary notation in Table 6 of FIG.4, can be created in a step 322 by evaluating the mathematical function (“SUM (x*y)”) based on the results of ATTORNEY DOCKET NO.: 36339.0051P1 the mathematical expression (“x*y”) contained in the intermediate data structure. In doing so, the results in the aggregation fields for each unique combination of values of the classification variables can be combined. In the example, the creation of the final data structure is straightforward, due to the trivial nature of the present mathematical function. The content of the final data structure can be presented to the user, for example in a two- dimensional table, in a step 324, as shown in Table 7 of FIG.4. Alternatively, if the final data structure contains many dimensions, the data can be presented in a pivot table, in which the user can interactively move up and down in dimensions, as is well known in the art. At step 326, input from the user can be received. For example, input form the user can be a selection and/or de-selection of the presented results. [00107] Optionally, input from the user at step 326 can comprise a request for external processing. In an aspect, the user can be presented with an option to select one or more external engines to use for the external processing. Optionally, at step 328, data underlying the user selection can be configured (e.g., formatted) for use by an external engine. Optionally, at step 330, the data can be transmitted to the external engine for processing and the processed data can be received. The received data can undergo one or more checks to confirm that the received data is in a form that can be appended to the data model. For example, one or more of an integrity check, a format check, a cardinality check, combinations thereof, and the like. Optionally, at step 332, processed data can be received from the external engine and can be appended to the data model as described herein. In an aspect, the received data can have a lifespan that controls how long the received data persists with the data model. For example, the received data can be incorporated into the data model in a manner that enables a user to retrieve the received data at another time/session. In another example, the received data can persist only for the current session, making the received data unavailable in a future session. [00108] FIG.5A illustrates how a selection 50 operates on a scope 52 of presented data to generate a data subset 54. The data subset 54 can form a state space, which is based on a selection state given by the selection 50. In an aspect, the selection state (or “user state”) can be defined by a user clicking on list boxes and graphs in a user interface of an application. An application can be designed to host a number of graphical objects (charts, tables, etc.) that evaluate one or more mathematical functions (also referred to as an “expression”) on the data subset 54 for one or more dimensions (classification variables). The result of this evaluation creates a chart result 56 which can be a multidimensional cube which can be visualized in one or more of the graphical objects. ATTORNEY DOCKET NO.: 36339.0051P1 [00109] The application can permit a user to explore the scope 52 by making different selections, by clicking on graphical objects to select variables, which causes the chart result 56 to change. At every time instant during the exploration, there exists a current state space, which can be associated with a current selection state that is operated on the scope 52 (which always remains the same). [00110] As illustrated in FIG.5A, when a user makes a selection, the inference engine 18 calculates a data subset. Also, an identifier ID1 for the selection together with the scope can be generated based on the filters in the selection and the scope. Subsequently, an identifier ID2 for the data subset is generated based on the data subset definition, for example a bit sequence that defines the content of the data subset. ID2 can be put into a cache using ID1 as a lookup identifier. Likewise, the data subset definition can be put in the cache using ID2 as a lookup identifier. [00111] As shown in FIG.5A, a chart calculation in a calculation/chart engine 58 takes place in a similar way. Here, there are two information sets: the data subset 54 and relevant chart properties 60. The latter can be, but not restricted to, a mathematical function together with calculation variables and classification variables (dimensions). Both of these information sets can be used to calculate the chart result 56, and both of these information sets can be also used to generate identifier ID3 for the input to the chart calculation. ID2 can be generated already in the previous step, and ID3 can be generated as the first step in the chart calculation procedure. [00112] The identifier ID3 can be formed from ID2 and the relevant chart properties. ID3 can be seen as an identifier for a specific chart generation instance, which can include all information needed to calculate a specific chart result. In addition, a chart result identifier ID4 can be created from the chart result definition, for example a bit sequence that defines the chart result 56. ID4 can be put in the cache using ID3 as a lookup identifier. Likewise, the chart result definition can be put in the cache using ID4 as a lookup identifier. [00113] Optionally, further calculations, transforming, and/or processing can be included through an extension engine 62. Optionally, associated results from the inference engine 18 and further computed by hypercube computation in said calculation/chart engine 58 can be coupled to an external engine 64 that can comprise one or more data processing applications (e.g., simulation applications, statistical applications, mathematical computation applications, database applications, combinations thereof, and the like). Context of a data model processed by the inference engine 18 can comprise a tuple or tuples of values defined by dimensions ATTORNEY DOCKET NO.: 36339.0051P1 and expressions computed by hypercube routines. Data can be exchanged through an interface 66. [00114] The associated results coupled to the external engine 64 can be intermediate. Further results that can be final hypercube results can also be received from the external engine 64. Further results can be fed back to be included in the Data/Scope 52 and enrich the data model. The further results can also be rendered directly to the user in the chart result 56. Data received from and computed by the external engine 64 can be used for further associative discovery. [00115] Each of the data elements of the database shown in Tables 1-5 of FIG.2A has a data element type and a data element value (for example “Client” is the data element type and “Nisse” is the data element value). Multiple records can be stored in different database structures such as data cubes, data arrays, data strings, flat files, lists, vectors, and the like; and the number of database structures can be greater than or equal to one and can comprise multiple types and combinations of database structures. While these and other database structures can be used with, and as part of, the methods and systems disclosed, the remaining description will refer to tables, vectors, strings and data cubes solely for convenience. [00116] Additional database structures can be included within the database illustrated as an example herein, with such structures including additional information pertinent to the database such as, in the case of products for example; color, optional packages, etc. Each table can comprise a header row which can identify the various data element types, often referred to as the dimensions or the fields, that are included within the table. Each table can also have one or more additional rows which comprise the various records making up the table. Each of the rows can contain data element values (including null) for the various data element types comprising the record. [00117] The database as referred to in Tables 1-5 of FIG.2A can be queried by specifying the data element types and data element values of interest and by further specifying any functions to apply to the data contained within the specified data element types of the database. The functions which can be used within a query can include, for example, expressions using statistics, sub-queries, filters, mathematical formulas, and the like, to help the user to locate and/or calculate the specific information wanted from the database. Once located and/or calculated, the results of a query can be displayed to the user with various visualization techniques and objects such as list boxes of a user interface illustrated in FIG.6. [00118] The graphical objects (or visual representations) can be substantially any display or output type including graphs, charts, trees, multi-dimensional depictions, images ATTORNEY DOCKET NO.: 36339.0051P1 (computer generated or digital captures), video/audio displays describing the data, hybrid presentations where output is segmented into multiple display areas having different data analysis in each area, and so forth. A user can select one or more default visual representations; however, a subsequent visual representation can be generated on the basis of further analysis and subsequent dynamic selection of the most suitable form for the data. [00119] In an aspect, a user can select a data point and a visualization component can instantaneously filter and re-aggregate other fields and corresponding visual representations based on the user’s selection. In an aspect, the filtering and re-aggregation can be completed without querying a database. In an aspect, a visual representation can be presented to a user with color schemes applied meaningfully. For example, a user selection can be highlighted in green, datasets related to the selection can be highlighted in white, and unrelated data can be highlighted in gray. A meaningful application of a color scheme provides an intuitive navigation interface in the state space. [00120] The result of a standard query can be a smaller subset of the data within the database, or a result set, which is comprised of the records, and more specifically, the data element types and data element values within those records, along with any calculated functions, that match the specified query. For example, as indicated in FIG.6, the data element value “Nisse” can be specified as a query or filtering criteria as indicated by a frame in the “Client” header row. In some aspects, the selected element can be highlighted in green. By specifically selecting “Nisse,” other data element values in this row are excluded as shown by gray areas. Further, “Year” “1999” and “Month” “Jan” are selected in a similar way. [00121] Optionally, in this application, external processing can also be requested by ticking “External” in the user interface of FIG.6. Data as shown in FIG.7 can be exchanged with an External engine 64 through the interface 66 of FIG.5A. In addition to evaluating the mathematical function (“SUM (Price*Number)”) based on the results of the mathematical expression (“Price*Number”) contained in the intermediate data structure the mathematical function (“SUM (ExtFunc(Price*Number))”) can be evaluated. Data sent out are (Nisse, 1999, Jan, {19.5, null}). In this case the external engine 64 can process data in accordance with the formula if (x==null) y=0.5 else ATTORNEY DOCKET NO.: 36339.0051P1 y=x as shown in in FIG.7. The result input through the interface 66 will be (19.5, 0.5) as reflected in the graphical presentation in FIG.6. [00122] In a further aspect, external processing can also be optionally requested by ticking “External” in a box as shown in FIG.8. Data as shown in FIG.9 can be exchanged with an external engine 64 through the Interface 66 of FIG.5A. In addition to evaluating the mathematical function (“SUM(Price*Number)”) based on the results of the mathematical expression (“Price*Number”) contained in the intermediate data structure the mathematical function [00123] SUM (ExtFunc(Price*Number)) [00124] can be evaluated. Data sent out are (Nisse, 1999, Jan, {19.5, null}). In this case the external engine 64 will process data in accordance with Function (1) as shown below and in FIG.9. The result input through the Interface 66 will be (61.5) as reflected in the graphical presentation in FIG.8. y=ExtAggr(x[ ]) for (x in x[ ]) if (x==null) y=y + 42 else y=y+x Function (1) [00125] A further optional embodiment is shown in FIG.10 and FIG.11. The same basic data as in previous examples apply. A user selects “Pekka,” “1999,” “Jan,” and “External.” By selecting “External,” already determined and associated results are coupled to the external engine 64. Feedback data from the external engine 64 based on an external computation, ExtQualification(Sum(Price*Number)), as shown in FIG.13 will be the information “MVG.” This information can be fed back to the logical inference engine 18. The information can also be fed back to the graphical objects of FIG. 10 and as a result a qualification table 68 will highlight “MVG” (illustrated with a frame in FIG.10). Other values (U, G, and VG) are shown in gray areas. The result input through the Interface 66 will be Soap with a value of 75 as reflected in the graphical presentation (bar chart) of FIG.10. FIG.11 is a schematic representation of data exchanged with an external engine based on selections in FIG.10. ATTORNEY DOCKET NO.: 36339.0051P1 FIG.12 is a table showing results from computations based on different selections in the presentation of FIG.10. [00126] Should a user instead select “Gullan,” “1999,” “Jan,” and “External,” the feedback signal would include “VG” based on the content shown in qualification table 68. The computations actually performed in the external engine 64 are not shown or indicated, since they are not relevant to the inference engine. [00127] In FIG.13 a user has selected “G” as depicted by 70 in the qualification table 68. As a result information fed back from the external engine 64 to the extension engine 62 and further to the inference engine 18 the following information will be highlighted: “Nisse,” “1999,” and “Jan” as shown in FIG.13. Furthermore, the result produced will be Soap 37.5 as reflected in the graphical presentation (bar chart) of FIG.13. [00128] FIG.14 illustrates an example of an operating environment 1400 for analyzing data in situ within a database, in accordance with one or more embodiments of this disclosure. The operating environment 1400 includes backend platform devices 1404 that constitute a platform for analysis of data. To at least that end, the backend platform devices 1404 that can form multiple subsystems 1410, including a query resolution subsystem 1414 and a storage subsystem 1418. The multiple subsystem 1410 also can include, for example, load balancer subsystem(s), a dispatcher subsystem, authentication subsystem(s), infrastructure subsystem, management subsystems, and similar subsystems. The backend platform devices 1404 also can form other subsystem that functionally coupled one or more of the multiple subsystems 1410 to devices remotely located relative to the backend platform devices 1404. One of those other subsystems can be an intake subsystem that includes multiple gateway components 1420. At least one of the multiple gateway components functionally couple the query resolution subsystem 1414 and a client device 1430. Such a coupling can be mediated, or otherwise permitted, by upstream link(s) and downstream link(s) and other network elements that permit communication between the client device 1430 and a gateway component of the multiple gateway component(s) 1420. Such links can be wireline link(s) or wireless link(s), or a combination of both. A double-headed arrow connecting the client device 1430 and the multiple gateway components 1420 represents those links and network elements. [00129] The client device 1430 can execute a client application (not depicted in FIG.14) to analyze data in accordance with aspects described herein. The client application can be retained in one or multiple memory devices (not depicted in FIG.14) and can be embodied in a web browser, a mobile application, or similar software application. Details of the client ATTORNEY DOCKET NO.: 36339.0051P1 application can be retained in the storage subsystem 1418, as binary data packaging components of the client application. As part of analyzing data, the client device 1430 can exchange data with the query resolution subsystem 1414 by means of an API exposed by a gateway component of the gateway components 1420. The API can be suitable for the type of client application, and can include, for example, a REST API, a web socket API, or similar. The client device 1430 can be embodied in, for example, a personal computer (PC), a laptop computer, a tablet computer, a smartphone, or similar device. [00130] In response to executing the client application, the client device 1430 can present a user interface (UI) that can include multiple UI objects. The multiple UI objects can include one or more graphical objects and/or other indicia (e.g., signs, indications, or other markings). One or more of the multiple UI objects can be selectable. The UI can be presented via a display device integrated into the client device 1430 or functionally coupled thereto, for example. A UI object presented in the UI can be referred to as a “widget,” and the UI can be referred to as a dashboard or analytical dashboard. One or more of the widgets can be formatted for graphical presentation of data, and can be generically referred to as chart widgets. [00131] Selection of a selectable widget can cause the client application to configure selection data defining, at least partially, a client query for analysis of data retained within a database. After a particular selection of widget(s), or selectable elements thereof, presented in an analytical dashboard (e.g., one of the user interfaces 1440), the client device 1430 can send the resulting selection data to the query resolution subsystem 1414. The selection data can be sent programmatically, via a function call pertaining to an API exposed by the gateway components 1420. Functions of that API can be built into the query resolution subsystem 1414 for execution in response to function calls from the client device 1430. A configuration file or another type of configuration resource can define number and/or type of widgets to be presented in the analytical dashboard, and can be retained within the storage subsystem 1418. [00132] Selection data can be updated (or reconfigured) in response to a change to the particular selection of the widget(s). The change can include, for example, a deselection of a presently selected element of a widget and/or a selection of a previously unselected element of that widget or another widget. That change constitutes another particular selection of widget(s) and causes the client application to configure updated selection data. The updated selection data also can be sent to query resolution subsystem 1414 programmatically, as the updated selection data becomes available. ATTORNEY DOCKET NO.: 36339.0051P1 [00133] Regardless of selection data being the result of an original selection or an update to that original selection, the query resolution subsystem 1420 can receive the selection data as part of a data analysis. As mentioned, the data analysis can be an associative analysis in accordance with aspects described herein. The query resolution subsystem 1420 can generate, based on the received selection data, a client query. The client query can be formatted as a statement in the selection query language described herein, and, thus, the client query can be an AA query. [00134] To resolve the client query, the query resolution subsystem 1420 can transform the client query into another query that is executable against a database, where data contained in the database is accessible using a query language different from the query language of the client query. As mentioned, that other query can be referred to as a target query because it can be directed to probing the data contained within the database, without transferring such data to the query resolution subsystem 1420. The database can be provided by a combination of the database devices 1460, and can be configured according to a particular database model (e.g., relational model) and a particular database standard for querying the database. The database can be referred to as a target database (simply for the sake of nomenclature) and can contain multiple tables 1466 retained in one or more of multiple storage server devices 1464 (referred to as data repositories 1464). In one example, the database can be configured according to a relational model and can be accessed according to Structured Query Language (SQL) standard. That is, the database can be embodied in a SQL database. Accordingly, in some cases, the target query can be a SQL query. [00135] The query resolution subsystem 1420 can cause execution of the target query against the database. To at least that end, the query resolution subsystem 1420 can be functionally coupled to one or more devices of the database devices 1460 the embody the database containing source data to be analyzed. One or multiple connector components 1450 can functionally couple the query resolution subsystem 1420 and the one or more database devices. Each one of the connector component(s) 1450 serves as a gateway for data from a database device to be transported to the query resolution subsystem 1420. The connector component(s) 1450 can be embodied in database (DB) connectors that can abstract differences of interaction with various data sources (e.g., various databases formed by database devices 1460). The DB connectors can embody, or can include, a pool of open database connectivity (ODBC) DB connectors. In some cases, the data transport can be implemented by APIs such as ODBC and Java™ database connectivity (JDBC) in order to integrate with databases supporting SQL. Embodiments of this disclosure, however, are not ATTORNEY DOCKET NO.: 36339.0051P1 limited in that respect, and other database APIs can be contemplated, such as object linking and embedded, database (OLE-DB) or APIs specific for a particular database configured according to a particular database model and standard. Metadata defining details of DB connections can be retained in the storage subsystem 1418. The storage subsystem 1418 also can include system metadata. [00136] The coupling among a database device and a connector component can be mediated, or otherwise permitted, by upstream link(s) and downstream link(s) and other network elements that permit communication between the connector component(s) and at least one of the database devices 1460. Such links can be wireline link(s) or wireless link(s), or a combination of both. A double-headed arrow connecting the database devices 1460 and the connector component(s) 1450 represents those links and network elements. [00137] In response to execution of the target query, the query resolution subsystem 1414 can receive result data satisfying the target query. The result data can be received by means of at least one of the connector component(s) 1450 and an integration layer that may be present within, or otherwise functionally coupled to, the query resolution subsystem 1414. The query resolution subsystem 1414 can then generate a data structure that includes the result data and can control visualization of the result data at the dashboard that configured the selection data originating the client query. The query resolution subsystem 1414 can send the data structure to the client device 1430 by means of a gateway component of the gateway components 1420. The data structure can be sent programmatically, via an API. In response to receiving the data structure, the client device 1430 can redraw the dashboard to visualize the result data. In some cases, the client device 1430 can present another UI besides the dashboard (e.g., an overlay onto the dashboard) in response to receiving such a data structure. [00138] As is also shown in FIG.15, the query resolution subsystem 1414 includes multiple resolution modules 1504 that, individually or collectively, can analyze source data within a database in accordance with aspects described herein. The query resolution subsystem 1414 also can include in-memory storage 1508. The in-memory storage 1508 can have a low latency of the order of 1 ms or less, which latency renders the in-memory storage 1508 adequate for fast access, including real-time access. Latencies of the order of 10 ms also may be adequate. The in-memory storage 1508 thus embodies a performant cache for storage and readout of data. In one example, the in-memory storage 1508 can be embodied in an in- memory key-value cache having low latency. [00139] The multiple resolution modules 1504 can include multiple engines 1506 that perform various operations to implement associative analysis in accordance with aspects ATTORNEY DOCKET NO.: 36339.0051P1 described herein. At least a subset of the engines 1506 embody, or include, the engines that constitute the associative data indexing engine 100 (FIG.1). As part of implementing in situ data analysis in accordance with aspects of this disclosure, at least a second subset of the engines 1506 can permit transforming client queries (such as AA queries) into query statements according to a query language of a database provided by a combination of the database devices 1460. Accordingly, a first engine of that second subset of engines 1506 can include a query generator module 1510 that can receive selection data from the client device 1430. The selection data can define a data model (which may be referred to as an original data model) data context. More specifically, the selection data can include first data identifying one or more fields and second data defining one or more values corresponding to at least one of the identified fields. The field(s) correspond to the data model. In some cases, at least one of the defined values lacks an association with the identified field(s). In addition, or in other cases, one or more of the defined value(s) can have a one-to-one correspondence to respective ones of the identified field(s). That is, a single defined value is associated with a single identified field. Further, or in yet other cases, at least some of the defined value(s) can have many-to-one correspondence to the defined field(s). In other words, the selection data conveys that there may be none, one, or many defined values associated with an identified field. The defined values can serve as filtering criteria and can be referred to as “Selections.” [00140] Value selections (which may be referred to as Per-Field Selections) can be updated in several ways. For example, a value selection can be changed by explicitly defining a particular set of one or more values. As another example, a value selection can be changed in response to deselecting, at a dashboard, a value previously selected and/or selecting, at the dashboard, another value previously unselected. The dashboard can be one of the UIs 1440 presented at the client device 1430. As yet another example, a value selection can be changed by selecting the set of values in a given state, such as Select Optional or Select Excluded. [00141] In selection query language used for in situ data analysis in accordance with aspects described herein, selection states are represented by Set Analysis expression results, assigned to variables of special type, corresponding to the type of operands in the Set Analysis expressions. The variables of this category are called Set Handles. [00142] Patterns can express respective types of Set Handles: Set Handle corresponding to an empty selection can be expressed with the following pattern: [selectionSetHandle] = {[model].1}; where the state “1” denotes Set Analysis selection requesting all data; that is, unfiltered data. Selecting explicit set of values in a particular field can be achieved with the following pattern: [selectionSetHandle] = {[previousSelectionSetHandle] <Field = {Value1, ATTORNEY DOCKET NO.: 36339.0051P1 …, ValueK}> leveraging the semantics of Set Analysis Modifier, where previousSelectionSetHandle also can be the same as the selection selectionSetHandle capturing the new selection state. Toggling the selection state of a value set in a particular field can be expressed with an XOR set operation: [selectionSetHandle] = {[previousSelectionSetHandle] <Field /= {Value1, …, ValueK}> };. Selecting values with Excluded or Optional states can be expressed with E() and P() set analysis functions, respectively, where E() can be represented by [selectionSetHandle] = {[previousSelectionSetHandle] <Field = E([previousSelectionSetHandle]) > }; and P() can be represented by [selectionSetHandle] = {[previousSelectionSetHandle] <Field = P([previousSelectionSetHandle]) > };. [00143] Components of Chart properties defining data calculation rules supplying Chart results have close association with the components of Select AA query. An example template that can be used to request Chart result is the following: Select <dim1-expr>,…, <dimN-expr>, <measure1-expr>, …, <measureK-expr> From [modelRef] At State [selectionSetHandleRef] Group by 1, … , N Order by R1 , ... Rs where [selectionSetHandleRef] is the reference to Set Handle representing the results of set analysis expression corresponding to a selection made in Alternate State associated with a particular chart widget; “Group by 1, … , N" lists the ordinals of dimensions, to explicitly indicate them as grouping items of selection query language; and “Order by R 1 , ... R s ” reflects the sorting defined for Chart dimensions and measures in the required sorting order. [00144] The dashboard used to supply selection data also can include one or more filtering panes (or Selection boxes). A filtering pane can be interpreted, in term of functionality, as a chart with a single dimension and no measures. Significant difference in the behavior of filtering panes relative to charts is that filtering panes preserve not only values pertaining to an associated selection (which corresponds to values in the filtering pane with the Selected State), but also report values not satisfying the selection criteria (corresponding to the Excluded State). [00145] A client query (e.g., an AA query) pattern used for a filtering pane can request all values from a field in addition to State associated per each value: Select <field-expr>, ValueState(<field-expr> in [selectionSetHandleRef]) as state ATTORNEY DOCKET NO.: 36339.0051P1 From [modelRef] Group by 1 [Order by R1[, R2]] where [selectionSetHandleRef] is the reference to set handle representing the results of set analysis expression corresponding to the selection made in Alternate State associated with a given filtering pane; “Group by 1” identifies only the first value as a grouping one, which indirectly restricts ValueState() function to be applied only to this grouping item; and ValueState() returns a state type per every value of the first argument, where the state is derived from selections reflected by the second argument; and “Order by R1, R2” reflects the sorting defined for the value and state combination. [00146] The query generator module 1510 can generate a client query based on the selection data received from the client device 1430. The query generator module 1510 can format the client query according to JavaScript object notation (JSON) format, in some cases. The client query can be generated using the selection query language described herein. Accordingly, selections made in an analytical dashboard (e.g., one of the UIs 1440) can be expressed in selection query language as one or more set handles based on set algebra operations reflecting manipulation(s) of the selections. Examples of the set algebra operations are shown in Table 1 below. Client queries requesting data to determine chart results can be formed by chart expressions, selections associated with the chart, and chart properties such as column value sorting. In this disclosure, for purposes of illustration, an aggregation can be a function having a domain that is multi-dimensional (e.g., multiple fields or rows in a table) and an image that is single dimensional (e.g., a number). Thus, the aggregation maps a dataset into a defined value. By defining the inner set expression and the outer set expression in terms of respective inner and outer set handles, a grammar for the query can be defined in terms of a set algebra for the inner set handle and the outer set handle. [00147] The query generator module 1510 can send the client query to a query adaptor module 1520 that can be included in the query resolution subsystem 1414. The query adaptor module 1520 can transform the client query into a target query that is executable against a database. The query adaptor module 1520 also can cause execution of the target query against the database. Causing execution of the target query comprises causing the connector component to execute the target query. To that end, the query adaptor module 1520 can send a directive to execute the target query. The directive can include payload data defining the ATTORNEY DOCKET NO.: 36339.0051P1 target query, and can be sent by means of at least one of interface modules 1530. The interface modules 1530 can embody, or can constitute, an integration layer. [00148] In response to execution of the target query, the query adaptor module 1520 can receive result data satisfying the target query. The result data can be received from a target database by means of at least one of the interface modules 1530. The query adaptor module 1520 can then generate a precursor data structure that includes the result data and corresponds to the client query as defined by a query language. For example, the client query is an AA query and the query language is the selection query language described herein. The precursor data structure casts the result data from the target database into a format that can be interpreted or otherwise used by one or more of the multiple engines 1506 in order to generate a hypercube representative of the result data. To generate the precursor data structure, the query adaptor module 1520 can incorporate the result data into the precursor data structure and can augment the result data present in the precursor data structure with metadata. The metadata can partially control a format of a visual representation of the result data. For example, such metadata can include symbol identifiers (IDs) associated with symbol tables, to permit or otherwise facilitate interaction with the visual representation. The metadata also can include state metadata defining states (selected or optional, for example). [00149] The query adaptor module 1520 can then send the precursor data structure to a particular engine of the multiple engines 1506. That particular engine can be the rendering engine 116 (FIG.1), for example. The particular engine can generate, using the precursor data structure, a visual representation of the result data, and can cause the client device 1430 to present the visual representation in a UI (e.g., one of the user interfaces 1440). To that end, the particular engine can generate, using the precursor data structure, a data structure that can control visualization of the result data at the user interface. As is described herein, the visualization of the result data can be accomplished via a visual representation that includes one or more UI objects. The UI object(s) can include one or more graphical objects and/or other indicia (e.g., signs, indications, or other markings). At least one of the UI object(s) can represent a respective portion of the result data. More specifically, the particular engine can map received result data and metadata to a hypercube (e.g., a virtual multidimensional data structure) by mapping columns of received result data to dimensions, dimension attributes and measures of the hypercube. That mapping results in a hypercube data defining the hypercube. The particular engine can then use the hypercube data to generate the data structure that controls the visualization of the result data. The data structure can include formatting data and, in some cases, formatting metadata that, individually or collectively, ATTORNEY DOCKET NO.: 36339.0051P1 define attributes (such as position, size, color, or grey-scale value) of visual objects and/or visual elements thereof and markings (such as text labels) pertaining to the visual representation. [00150] In some embodiments, the data structure can include formatting data defining visualization formats for presentation of respective ones of the UI object(s) at the client device 1430. As such, a graphical object that may be included in the UI object(s) is formatted according to a particular visualization format, and contains graphical elements (such as lines, blocks, circles or other types of symbols, text, and similar markings) that convey the data forming part of the visual representation. That particular visualization format defines type(s), arrangement(s), and/or attribute(s) of the graphical visual elements. The formatting data also can define a layout of the UI object(s) included in the visual representation. Such a layout includes an arrangement of areas corresponding to respective graphical objects that may be included in the visual representation. Each area within the arrangement of areas has a defined shape, a defined size, and a defined placement within a viewport defined as part of the layout. Hence, the layout can convey relative visualization weight (or emphasis) ascribed to the graphical objects that may present in the visual representation. [00151] As is illustrated in FIG.16, in some embodiments, the query adaptor module 1520 can include multiple components for transformation of a client query into a target query (e.g., a SQL query) and for output of result data. The multiple components can form two processing pathways: a query pathway and a result pathway. The query pathway ingests the client query, transforms the client query into the target query, and outputs the target query. The target query can be output as part of causing the execution of the target query against a database. The result pathway receives result data from the database in response to execution of the target query. Execution of the target query permits associative analysis of source data without transferring the source data from a database to the in-memory storage 1508. Accordingly, the application of an associative model to the source data can be accomplished by incorporating elements of the associative model into the target query. The associative model can define rules of accessing source data at a target database. More specifically, the associative data model can include tables, with references to tables in the target database and, optionally, other metadata. The associative data model also can include other metadata corresponding to table columns, including reference to such table columns. The associative model can further include fields, which are mapped to respective columns and can be assigned unique names. The associative model can define associations between tables. Such associations can be represented as one or more graphs (such as acyclic graphs). As such, the ATTORNEY DOCKET NO.: 36339.0051P1 rules pertaining to the associative model can identify tables or fields, or both, that can be accessed, and relationships (or associations) among those table and/or fields. The associative model can be retained in the storage subsystem 1418, within a configuration file or another type of configuration resource, for example. To incorporate elements of the associative model into the target query, the query adaptor module 1520 can transform the client query into the target query by applying, for example, one or multiple rules of a defined semantic mapping. The multiple rules can include a first rule pertaining to the associative model and a second rule pertaining to a semantic correspondence between the client query and the target query. [00152] Transforming the client query into the target query can include multiple stages in the query pathway. To that point, the query adaptor module 1520 can include a parser component 1610 that can generate, by parsing the client query, an abstract syntax tree (AST) representative of the client query. More specifically, the AST is a graph that represents the content of the client query. Such content is defined by the syntax structure of the client query, and the graph include nodes corresponding to respective element(s) (or types of element(s)) present in the content of the client query. Thus, the AST can represent the syntax structure of the client query. Generating the AST can include determining one or more set handle operations defined by the client query, and incorporating into the AST the one or more set handle operations as respective nodes. Thus, the generated AST can include one or more nodes identifying respective set handle operations. [00153] The parser component 1610 can pass the AST to a planner component 1620 that also can be included in the query adaptor module 1520. The planner component 1620 can generate, based on the one or more set handle operations included in the respective nodes of the AST, a logical plan corresponding to the client query. The logical plan can be indicative of the semantics of the client query, and can includes a sequence of operations associated with the semantics of the client query. In some cases, to generate the logical plan, the planner component 1620 can apply one or more optimization rules that result in that sequence of operations. In some cases, the query adaptor module 1520 can expose an optimization API for introducing changes into the logical plan. Such changes can permit optimizing (or further optimizing) the client query, for example. The optimization API can be retained within one or more memory devices 1650 (which can be referred to as repository 1650). [00154] The planner component 1620 can pass the logical plan to a transformer component 1630 that can generate a second logical plan based on the logical plan corresponding to the client query. The second logical plan corresponds to the target query. Generating the second logical plan can include translating the query logic (or semantics) of the client query into a ATTORNEY DOCKET NO.: 36339.0051P1 representation that is cast in terms of a query language used by a database that is the target of the client query. In other words, the second logical plan represents the logic of the client query in a form that can be interpreted by the query language of the database. Accordingly, the second logical plan is indicative of semantics of the target query in the query language. [00155] To generate the second logical plan, the transformer component 1630 can apply a semantic mapping to the logical plan corresponding to the client query. In some cases, the query adaptor module 1520 can expose a customization API allowing to modify AA-to-SQL mapping rules that are applied to the generation of target queries expressed in SQL. Thus, by exposing the customization API, the semantic mapping can be adjusted to permit transformation of the logical plan corresponding to the client query into another logical plan corresponding to a particular type of query language besides SQL. For example, that particular query language can be NoSQL query language or multidimensional expressions (MDX) query language. The customization API can be retained within one or more memory devices 1650 (which can be referred to as repository 1650). The transformer component 1630 than can generate, using the second logical plan, an AST representative of the target query. [00156] The transformer component 1630 can then cause execution of the target query represented by that AST. Causing execution of the target query can include sending the AST representative of the target query to a connector component of the one or multiple connector components 1450. The connector component can execute the target query represented by the AST against a target database. To that end, in some cases, the connector component can generate a SQL statement based on the AST. [00157] In some cases, the query adaptor module 1520 can optionally include a generator component 1640 that can generate a query statement defining the target query. Generating the query statement can include mapping the semantics indicated by the AST representative of the target query to one or more expressions according to a database dialect of the database that is the target of the client query. Therefore, instead of sending the AST representative of the target query to a connector component (not depicted in FIG.16) for execution, the query adaptor module 1520 can send the target query to the connector component. In some cases, the customization API exposed by the query adaptor module 1520 also can permit introducing adjustments to the query statement in order to account for variations in the database dialect when the target query is resolved against a different target database. [00158] In response to execution of the target query, the query adaptor module 1520 can receive result data satisfying the target query. The query adaptor module 1520 can include an output generator component 1660 that, responsive to execution of the target query, can ATTORNEY DOCKET NO.: 36339.0051P1 receive result data satisfying the target query. The result data can be received from the database (not depicted in FIG.16) via the connector component that executes the target query against the database and at least one of the interface modules 1530 (FIG.15) functionally coupling the connector component and the output generator component 1660. [00159] The output generator component 1660 can then generate a data structure that includes the result data. The query adaptor module 1520 can send the data structure to an engine of the multiple engines 1506 for generation of one or more artifacts that control visualization of the result data at a user interface. The artifacts form a visual representation of the result data, and can be generated based on the data structure. In some cases, the data structure can include formatting data and/or formatting metadata that controls the visualization of the result data at the user interface. [00160] The semantic mapping that can be applied to a logical plan corresponding to the client query can be defined in terms of rules. The semantic mapping is applied to the logical plan corresponding to the client query in order to generate a logical plan corresponding to a target query. For the sake of explanation, the semantic mapping is described in connection with an AA query embodying the client query and a SQL query embodying the target query. The rules may include one or more of the following: Rule 1: Selection query language Select query is translated to a SQL Select query. Rule 2: Selection query language Set Handle definition statements are only translated to SQL in the context of selection query language Select query. Rule 3: Set Handle semantics defines a filtering condition for every table involved in a generated SQL query. Rule 4: Selection query language SelectItemList expressions of aggregated result columns are split into inner calculation(s) and outer calculation(s). Inner calculations are based on the Aggregation functions and its arguments. Outer calculations are applied on top of the Aggregation function results. Rule 5: Inner aggregation calculations are computed in subqueries. These subqueries are defined per aggregation slice; that is, combination of a granularity and the filtering condition. Rule 6: The granularity is defined as a set of grouping columns in a per-slice subquery, driven by the TOTAL aggregation function qualifier or if not present, by the set of grouping columns of the original AA query. ATTORNEY DOCKET NO.: 36339.0051P1 Rule 7: The filtering condition of a per-slice subquery is based on the Set Analysis qualifier in corresponding Aggregation function, or if not present by the Set Analysis expression in AT STATE clause of the original AA query. Rule 8: These per-slice subqueries are then joined, matching up values of shared grouping columns. The result of the join is used in the FROM clause of the outmost Select query applying outer calculations to the aggregation results returned from per-slice sub- queries. Rule 9: In every per-slice subquery all fields referenced in the subquery selection item list expression define the Set of Referenced Tables. Rule 10: Associative Model is then analyzed to find associations between Referenced tables, which comprise a Graph of Join operations, associating Referenced Tables. The Graph of Join Operations could include additional tables, involved in the association paths between Referenced tables. Rule 11: The Graph of Join operations is translated into SQL FROM clause join condition, where the Joins are applied to per-table Sub-queries with WHERE clauses based on filtering conditions derived from Rule 7 above. Rule 12: Order by clause of the AA query is passed as is to the outmost SQL query, as it may be specific to expressions in the SelectItemList, hence it does not require processing additional column references. [00161] Further, the concept of ValueState() function also is to be mapped to semantics corresponding to a SQL query. The ValueState() function ValueState(<field-expr> in [selectionSetHandleRef]) can embody a type of aggregation function, interacting with the set analysis expression in its second argument in a particular way. That second argument is a Natural Selection Expression; that is, the /second argument can be represented as a cross- product of FieldStates per fields with selections. FieldStates can correspond to user selected values in a given field. Such values can be referred to as Per-Field Selections. [00162] Not all values from Field Selection in one field can be associated with selections in other fields. The values compatible with (or that satisfy) the selections in all fields can be referred to as Filtered values simply for the sake of nomenclature. Such nomenclature arises from the equivalence of this criteria to filtering performed in Charts. That is, filtered values are values that would satisfy an AA query if the second argument Selection State expression had been used in AA Query AT STATE clause. [00163] More specifically, ValueState() function assigns “Selected” state to values belonging to filtered values, for fields with Per-Field Selections; “Possible” state to values ATTORNEY DOCKET NO.: 36339.0051P1 belonging to filtered values, for fields without Per-Field Selections; “Selected-Excluded” state to values belonging to Per-Field Selection that are not in a Filtered set—in other words, an end-user selected them, but they are not compatible with selected values in other fields; and “Excluded” state to the remaining values. [00164] SQL corresponding to ValueState() function can thus be driven primarily by the SQL generation rule for the Inference operation for the “filtered” values, and by the involved set operations between value sets of different states described herein. [00165] As is described herein, Set Analysis is data analysis functionality that permits defining a set of data values that is different from a set defined by current selections. In this disclosure, the semantics of the Set Analysis functionality has been formalized by defining it as a functional algebra comprised by a set of operations and set of operands (operation arguments) the operations use as input and output. Table 1 presents an ontology and semantics (or meaning) of the Set Analysis algebra operands. Table 1 Concept Meaning of e e e ATTORNEY DOCKET NO.: 36339.0051P1 Row Set There are two ways to consider Record Set expression result: expression - in the context of a given table, the Record Set expression results in a o d e u c o a a ge a a e es e a ys s u c o a y ca e e e as follows. [00167] Operand types: ^ Value list ^ Field state ^ Selection state ^ Row state [00168] Implied type coercion rules for operand types: ^ Binding Value list to Field State Semantics: Results in the set of existing field values matching those in the Value list. Signature: {ValueList, FieldA} => FieldState ^ Casting FieldState to SelectionState Semantics: creates a selection state based on selection in just given one field. Signature: SelectionState(FieldStateA) => {FieldA: FieldStateA} ^ Casting SelectionState to FieldState Semantics: extracts a field state from selection state based only on a single field. If a Selection state is based on 0 or 2+ fields, casting generates an error Signature: FieldState( SelectionState({FieldA: FieldStateA}) ) => FieldStateA [00169] Operators/Functions ^ FieldState Binary Set operations Semantics: Union, Intersection, Difference, Symmetric Difference (XOR) over FieldStates (note this is covering '+=', '-=', '*=', '/=' operators ) Signature: FieldState1 => FieldState3 ATTORNEY DOCKET NO.: 36339.0051P1 ^ FieldState Cross-Product (x) Signature: zero or more FieldStates => SelectionState Example: <Field1=FieldState1> x <Field2=FieldState2> => {Field1: FieldState1, Field2: FieldState2} <Field1: FieldState1> x <Field1: FieldState3> => error ^ SelectionState override (<<) Signature: SelectionState1 << SelectionState2 => SelectionState3 Semantics: SelectionState3 is a cross-product of all field states in SelectionState2 with the field states in SelectionState1 for fields not present in SelectionState2. In order words, field states are combined in SelectionState1 and SelectionState2. If both selection states contain a field state for a given field, the field state for this field from SelectionState2 takes precedence. Example: {Field1: FieldState1a, Field2: FieldState2a} << {Field1: FieldState1b, Field3: FieldState3b} => {Field1: FieldState1b, Field2: FieldState2a, Field3: FieldState3b} ^ RowState Binary Set operations Semantics: Union, Intersection, Difference, Symmetric Difference (XOR) over Row States in the context of a given table. Signature: RowState <setOp> RowState2 => RowState3 ^ Inference operation Signature: Infer(SelectionState1, OutputTable2) => RowState2 ^ P() operation (possible values) Signature: P(SelectionState1, OutputField2) => SelectionState2 Semantics: P(SelectionState1, OutputField2) = FieldState( Inf(SelectionState1, {OutputField2}) ), where FieldState() is casting operation from Selection state to a Field state it is based on; returns error if SelectionState is based on multiple Field:FieldState pairs. ^ E() operation (excluded values) Signatures: E(SelectionState1, OutputField2) => SelectionState2 Semantics: E(SelectionState1, OutputField2) = OutputField2:ALL - P(SelectionState1, OutputField2), where OutputField2:ALL is a FieldState containing all symbols in the field OutputField2. ATTORNEY DOCKET NO.: 36339.0051P1 [00170] Set Analysis operations in accordance with aspects of this disclosure can be mapped to SQL operations in the context of SQL SELECT query, in some cases. An example mapping of Set Analysis operations to relational algebra operations is the following. SelectionState drives SELECT operation condition applied via inference operation, per a given table. [00171] Using $ to denote a SelectionState, Inf() for the inference operation, and existing relational algebra notations, the mapping can be expressed as follows: ($, T) => Ϭ Inf($,T) (T) Eq. (1) where T is the table context, which in combination with the Selection state can be translated into a Select operation over this table. [00172] Given that a SelectionState can be considered as a cross-product of FieldState, the SelectionState can be expressed as follows: $ = f 1 × … f N Eq. (2) where N ≥ 0 is the number of fields f1, f2, …, fN-1, and fN containing selections contributing to the SelectionState $. As an SelectionState also can be expressed as: ^ Eq. (3) [00173] The inference operation can find a Row State (e.g., a subset of table rows) of a table, where each row is associated with one or more selected values in each field with selections. By denoting a RowState of the table T as R T , the inference operation can be expressed as follows: Inf($, T) = R T Eq. (4) ATTORNEY DOCKET NO.: 36339.0051P1 It is noted that RowState can be considered to be an outcome of the Select operator condition as introduced in Rule (1) above: Select operator applied to a table in effect finds the subset of table rows satisfying the condition defined in the Select operator. [00174] A row-to-value association in the same table means that the row contains the value in a particular field. A row in Table A is associated to a value in Table B if they are related when satisfying joining conditions defined through model associations between Table A and Table B. [00175] Because the Inference operation generates a set of rows matching selections in every SelectionState field, the Inference result can be computed as a conjunction of the Inference operation per field, that is Inference operations over FieldState fi: Inf($, T) = Inf(f 1 × … f N , T) = Inf(f 1 , T)∩ … Inf(f N , T) Eq. (5) or in the ($, T) => Ϭ Inf(f1, T) (T) ∩ … Ϭ Inf(fN, T) (T). Eq. (6) Eq. (6) is equivalent ($, T) => Ϭ Inf(f1, T) and … Inf(fN, T) (T) . Eq. (7) [00176] It is noted that under a Select operation, Inf() function is assumed to imply condition operation, as opposed to the result of the condition materialized as a RowState. That is, under the Select operator, the semantics of the Inference operation is treated at the logical level. More specifically, when state f corresponds to a column from the table T, the inference condition applied to the table T has to filter out the rows matching values that f is based on: Ϭ Inf(f T, T) (T) = Ϭ f.field in (f.valueset) (T). Eq. (8) [00177] When field state f A corresponds to a column from Table T A , and the inference operation filters Table TB, associated in the model to Table TA through tables (T1, … TK) via association conditions (J [A,1], J [1,2], … J [K,B] ) , the filtering applied within Table T A is ATTORNEY DOCKET NO.: 36339.0051P1 propagated to the Table TB via association conditions. The condition propagation rule fits the semantics of a Semi-Join operation among a first table and a second table. The Semi-Join operation is represented by the ⋉ sign. The Semi-Join operation matches rows between the first table and the second table, and provides (e.g., presents, retains, or passes) as a result of the operation only the matching rows of whichever one of the first table or the second table is entered on the left-hand side of the Semi-Join operation sign. Ϭ Inf(f TA, TB) (T B ) = T B J[B,K] (T K J[K,K-1] … (T K J[1,A] Ϭ fA.field in Eq. (9) (fA.valueset)(TA)) [00178] While the implementation of in situ data analysis of this disclosure has been described in connection with a client-server configuration, the disclosure is not limited in that respect. In some embodiments, rather than relying on the client device 1430 being functionally coupled to the backend platform devices 1404 that provide the associative data analysis described herein, the client device 1430 can host the query resolution subsystem 1414 and can be functionally coupled to the database devices 1460. Hence, in such embodiments the client device 1430 implement in situ data analysis of a target database in accordance with aspects described herein. [00179] Various examples of transformation from AA query to SQL query are illustrated with reference to FIG.17 to FIG.20. In the examples, source data present in a SQL database is denoted by TPCH, and a data mode corresponding to the source data is denoted by tpch. The source data can be embodied in, can include at least a subset of the multiple tables 1466 (FIG.14). The data model can be made available to the backend platform devices 1404 before performing in situ data analysis in accordance with aspects described herein. The data model can be an associative model. As mentioned, the associative model can be retained in the storage subsystem 1418, within a configuration file or another type of configuration resource, for example. [00180] FIG.17 illustrates examples of three widgets (or graphical objects) in accordance with one or more embodiments of this disclosure. The three widgets individually convey the same result data, and are formatted according to respective graphical formats. Widget 1700 is embodied in a table, widget 1740 is embodied in a bar chart, and widget 1780 is embodied in a pie chart. Table 2 illustrates an AA query that can cause determination of result data corresponding to each one of widget 1700, widget 1740, and widget 1780. ATTORNEY DOCKET NO.: 36339.0051P1 Table 2 Associative Analysis (AA) Select [P BRAND], Avg(P RETAILPRICE) from [tpch] group by 1 (FIG.15) can implement the following transformations to the AA query shown in Table 2, in accordance with aspects described herein: (i) The from <Table> SQL string content is determined based on Field relationship to tables. A single table is involved in the example shown in FIG.17. (ii) The Field name present in the AA query shown in in Table 2 is replaced with table column references; that is, [P_BRAND] => "PART".”P_BRAND”. (iii) Group by in the AA query is adjusted to an equivalent supported by a target database (e.g., a SQL database embodied by at least some of the database devices 1460. In some cases, “Group by 1" may be supported by the target database. [00182] As another example, FIG.18 illustrates an example chart 1800, an example table association diagram 1840, and a definition 1880 of the associative model relating the tables shown in the example table association diagram 1840, in accordance with one or more embodiments of this disclosure. No selections are present in the examples shown in FIG.18. Table 3 illustrates a AA query that can cause determination of result data corresponding to the chart 1800. Such a AA query is straightforward because relationship complexity among tables (see example table association diagram 1840) is embedded in the exemplified associative model defined by the definition 1880. A SQL query corresponding to that AA query also is shown in Table 3. Boldface characters in the SQL query are present therein simply to emphasize aspects of the transformation from AA query to SQL query. Table 3 A A query Select [O_ORDERPRIORITY], Sum(L_QUANTITY) from [tpch] group M ATTORNEY DOCKET NO.: 36339.0051P1 ON ("LINEITEM"."L_ORDERKEY" = "ORDERS"."O_ORDERKEY") GROUP BY "ORDERS""O ORDERPRIORITY" (FIG.15) can implement the following transformations to the AA query shown in Table 3, in accordance with aspects described herein: (i) Set of tables is determined from the fields referenced in the Select Item list. (ii) Association graph representing the associative model defined by the definition 1880 is traversed and all tables on the path joining the tables are combined with the Inner joins, per join type defined for a given association between such tables. [00184] As yet another example, the example associative model 1900 shown in FIG.19A is considered. The example associative model 1900 presents associations among three tables. Additionally, one-value selections made in two tables also are considered. As is described herein, selection data can be received at the client device 1430, via a dashboard, in response to execution of the client application for data analysis. The selection data can define the one- value selections. Because such selections can be made in sequence—e.g., one column being selectable after another column has been selected—multiple Set statements can be generated in response to such selection data. The query generator module 1510 (FIG.15) can generate such statements. Specifically, as an example, the following Set statements can be generated: Set [selectionSet] = {[tpch].1}; Set [selectionSet] = {[selectionSet] <O_ORDERSTATUS={'F'}>}; Set [selectionSet] = {[selectionSet] <C_MKTSEGMENT={'BUILDING'}>}; [00185] Table 4 illustrates an AA query that can cause determination of result data corresponding to the chart 1940 shown in FIG.19B. Diagram 1980 illustrates filtered fields associated with the one-value selections. The At State clause in that AA query applies selection context for chart execution. As is described herein, chart execution can be implemented via a particular engine of the multiple engines 1506 (FIG.15), for example. That particular engine can be embodied in the calculation/chart engine 108 (FIG.1). A SQL query corresponding to that AA query also is shown in Table 4. Boldface characters in the SQL query are present therein simply to emphasize aspects of the transformation from AA query to SQL query. ATTORNEY DOCKET NO.: 36339.0051P1 Table 4 A A query Select [O_ORDERPRIORITY], Sum(L_QUANTITY) from [tpch] At State [selectionSet] group by 1; " "" " M ecause o e o e-va ue se ec o a e wo a es, as e o e , e que y adaptor module 1520 can apply the following logic generating filtering criterion in the SQL query shown in Table 4. (i) Filtering on a column from joined table is expressed as a simple filtering criterion as it is not inflating the number of projected rows. Here, the term “inflating” refers to the multiplier effects that may present in regular joins, whereby multiple combinations of rows from the tables being joined satisfy the join condition. (ii) Filtering on a column from a non-projected table is done via Semi-Join. That is, the table has to have only filtering effect, without inflating projected rows. The Semi-Join can be expressed with IN- Subquery or Exist-Subquery constructs. [00187] As yet another example, FIG.20 illustrates example of associated fields, in accordance with one or more embodiments of this disclosure. A first field 2010 is labeled “S_NAME,” a second field 2020 is labeled “S_PHONE,” and a third field 2030 is labeled “S_ACCTBAL.” Such labels are merely illustrative and are used for the sake of simplicity of description. Assuming that one value is selected in the first field (S_NAME column) and three values are selected in the third field 2030 (S_ACCTBAL column), the following set handle expression can reflect such a compound selection: Set [selectionSet] = {[tpch].1 <S_NAME={'Supplier#000000001'}, S_ACCTBAL={5755.94, -998.22, -997.61}>};. ATTORNEY DOCKET NO.: 36339.0051P1 It is noted that “Selected” and “Optional” state filter can be built in the same fashion as those for Charts. Remaining states can be determined as set operations over Selected values and other values from Per-Field Selections. Table 5 illustrates a template of an AA query per selection box, and another template of a SQL query per selection box, where such a SQL query corresponds to an AA query that has been generated based on the template of the AA query. Table 5 AA query Select <ColumnRef>, ValueState(<ColumnRef> in [selectionSet]) from [tpch] At State [selectionSet] The query adaptor module 1520 can then optimize the query to maximize reuse of the query operations shared between query plan branches. [00188] As is described herein, calculations applied over aggregations can be referred to as outer calculations. Calculations applied within aggregation arguments can be referred to as inner calculations. An example general rule dictates to compute first the aggregation functions within sub-queries with corresponding granularity (combination of grouping columns) and filtering. Aggregations with identical combination of granularity and filtering are placed into a subquery corresponding to this combination of granularity and filtering. The subquery granularity can be determined either based on columns in the Aggregation function TOTAL qualifier or based on the granularity of AA query in case TOTAL qualifier is not present. Sub-queries are then joined based on the matching grouping columns. In an example scenario where none of the grouping columns are matching can lead in effect to a crossjoin, which for the sake of being used in analysis dashboards (e.g., UIs 1440 (FIG.14) is not an expected pattern to be used within well-defined Charts, with the exception of the case of sub- queries with overall aggregation granularity (no grouping columns). ATTORNEY DOCKET NO.: 36339.0051P1 [00189] The final Select query on top of joined subqueries is where the outer calculations are then applied over aggregation results arising from the subqueries. [00190] Various examples of aggregations, scalar functions, and other operations are illustrated with reference to FIG.21 to FIG.23. More specifically, FIG.21 illustrates an example of a widget embodied in a KPI chart 2100 based on a single aggregated expression, in accordance with one or more embodiments of this disclosure. Table 6 presents an AA query corresponding to the KPI defined by the KPI chart 2100 and a SQL query resulting from the transformation of the AA query. Table 6 Select Sum(P_RETAILPRICE*P_RETAILPRICE) / AVG(P_SIZE) AA query From [t ch] [00191] To generate the SQL query shown in Table 2, aggregate functions are calculated in a subquery before the outer calculations are applied. In some cases, in the example shown in FIG.21, the KPI expression can be directly reduced to an equivalent single SQL Select statement without the application of the transformation based on rules for outer calculations and inner calculations. [00192] FIG.22 illustrates an example table 2200 to determine a TOTAL quantifier without grouping columns. Such a TOTAL quantifier denotes overall aggregation according to expression semantics of this disclosure. Table 7 presents an AA query to determine the TOTAL quantifier and a SQL query resulting from the transformation of that AA query. Transformation of the AA query into the SQL query clearly illustrates the SQL query generation rules around inner/outer aggregations. More specifically, generation of the SQL query shown in Table 7 includes generation of a subquery per combination of Aggregation Granularity and Set Analysis expression. Additionally, outer calculations are applied after ATTORNEY DOCKET NO.: 36339.0051P1 subqueries are merged. Further, Cross Join is used in the transformation because there are no grouping items in the second query to join on. Table 7 A A query Select [P_BRAND], Sum(P_RETAILPRICE * 1.13) / COUNT(TOTAL P SIZE ) S [ ] . ustrates an exampe ta e to eterm ne a et na ys s quant er, in accordance with one or more embodiments of this disclosure. The Set Analysis quantifier can determine filtering within an aggregation subquery. Table 8 presents an AA query corresponding to the Set Analysis quantifier and a SQL query resulting from the transformation of that AA query. Transformation of the AA query into the SQL query clearly illustrates SQL query generation rules around inner/outer aggregations. More specifically, generation of the SQL query shown in Table 8 includes generation of a subquery per combination of Aggregation Granularity and Set Analysis expression. Subqueries are then joined based on respective grouping items of the subqueries. Table 8 Select [P_BRAND], Sum(P_RETAILPRICE * 1.13) / AA uer ' ' */ ATTORNEY DOCKET NO.: 36339.0051P1 GROUP BY "PART"."P_BRAND" ) "T2" s not rely on materializing intermediate results of sub-expressions (or in other words, portions of AA queries, for example). Operations included in an AA query can be converted to the operations of the target database query language at the logical level. As is described herein, the target database query language can be, for example, SQL, MDX, NoSQL, or the like. Simply for the sake illustration, the operation of Select Excluded may be considered, which operation is expressed in selection query language with the Set Analysis operation E({CurrrentState} Field). Select Excluded can result in a large set of selected values, when applied to selections with few items selected. Thus, Select Excluded might cause performance difficulties with SQL generation that is based on Set Analysis sub-expressions being computed by one or more of the multiple engines 1506 (FIG.1506) and the in-memory storage 1508, and expressing the result of Set Analysis as a set of resulting values participating in a client query (an AA query, for example). Instead, embodiments of this disclosure can transform a Select Excluded operation into a target query (e.g., SQL query) with a filter condition following the pattern of the part of the Select State query from Table 5 corresponding to the excluded state. Table 9 shows an example of the transformation. Table 9 Set [selectionSet] = {[tpch].1 <S_NAME={'Supplier#000000001'}}; ; ATTORNEY DOCKET NO.: 36339.0051P1 [00195] In some embodiments, the query adaptor module 1520 (FIG.15) can transform an AA query into an MDX query or a dialect of NoSQL queries, or both. The MDX query is a query expressed in the query language supported by OLAP data sources (that is, multidimensional expressions query language). NoSQL queries are executable against databases containing semi-structured data. To that end, in some embodiments, the query adaptor module 1520 can include replicas of the transformer component 1630 (FIG.16) and replicas of the generator component 1640. Each one of the replicas can implement respective AA-query–to-target-query transformation logic, and each one of the replicas of the generator component 1640 can generate target query syntax corresponding to respective query languages (e.g., MDX or NoSQL, or both). Simply as an example, the transformer component 1630 can apply AA-query–to-SQL-query transformation logic; a first replica of the transformer component 1630 can apply AA-query–to-MDX-query transformation logic; and a second replica of the transformer component 1630 can apply AA-query–to-NoSQL- query transformation logic. The disclosure is not limited in that respect, and in accordance with aspects described herein, the transformer component 1630 can apply the appropriate AA-query–to-target-query transformation logic for transformation of a client query into a target query in a desired query language. [00196] Regardless of particular query language, provided an AA query and a query language of a target database, AA-query–to-target-query transformation logic can include transformation rules covering the following types of operations: (a) reading distinct values of artifacts mapped to field(s) of an AA query fields; (b) filtering criteria reflecting association of values in one or more fields to values of the field being fetched under a particular selection, thus reflecting a generalized inference operation; and (c) filtering criteria reflecting association of values in one or more fields to computed aggregated values of a chosen field. Transformations that may be treated as optional (and when not present, may be removed from an analytical dashboard) can include: (i) scalar functions and operators; (ii) operations combining multiple aggregation granularity/filtering combinations into a single operation result (to support Set Analysis and TOTAL aggregation qualifiers); (iii) full set of logical operations (AND, OR, NOT) to be used to combine multiple filtering criteria reflecting the types of operations (a) to (c) above; and (iv) union of value sets, intersection of value sets, difference of value sets (in order to support more complete set of Set Analysis operations). ATTORNEY DOCKET NO.: 36339.0051P1 [00197] FIG.24 illustrates a flowchart of an example method 2400 for analyzing data in situ within a database, in accordance with one or more embodiments of this disclosure. A computing device or a system of computing devices can implement the example method 2400 in its entirety or in part. To that end, each computing device can include computing resources that can implement, or can permit implementing, at least one of the blocks included in the example method 2400. The computing resources include, for example, central processing units (CPUs), graphics processing units (GPUs), tensor processing units (TPUs), memory, disk space, incoming bandwidth, and/or outgoing bandwidth, interface(s) (such as I/O interfaces or APIs, or both); controller devices(s); power supplies; a combination of the foregoing; and/or similar resources. For instance, the system of computing devices can include programming interface(s); an operating system; software for configuration and or control of a virtualized environment; firmware; and similar resources. [00198] The system of computing devices can be referred to as a computing system. In some cases, the computing system can host the query generator module 1510 and the query adaptor module 1520 (FIG.15), and can perform one or more of the operations of the example method 2400 by executing at least the query generator module 1510 and the query adaptor module 1520. [00199] At block 2410, the computing system can generate a client query based on interaction with a user interface. The user interface can be presented at a client device (e.g., client device 1430 (FIG.14)) in respect to execution of a client application for data analysis in accordance with aspects described herein. The client device can be remotely located relative to the computing system. An example of the interaction with the user interface include selection of one or multiple visual elements in the user interface and a group of values corresponding to at least one selection of the one or more selections. In addition, or in some cases, the interaction with the user interface also can include deselection of one or more multiple second visual elements in the user interface. The user interface can be, for example, an analytic dashboard (e.g., one of the user interfaces 1440 (FIG.14)) presented by the client device. The client query can be an AA query defined or otherwise formatted according to a selection query language in accordance with aspects of this disclosure. [00200] At block 2420, the computing system can transform the client query into a target query directly executable against a database. In one example, the target query is a Structured Query Language (SQL) query and the client query is an AA query. Transforming the client query into the target query can include generating the target query using the client query and a defined data model. The data model can be an associative model (also referred to as ATTORNEY DOCKET NO.: 36339.0051P1 associative data model) including at least one rule representative of a relationship between at least two tables present in the database. The at least two tables can be included in the multiple tables 1466 (FIG.14). The associative model can be retained in a configuration file or another configuration resource retained in the storage subsystem 1418 (FIG.14). The associative model can be made available to the computing system before performing the example method 2400. [00201] Accordingly, generating the target query can include, for example, applying one or multiple rules of a defined semantic mapping. The multiple rules can include a first rule pertaining to the associative model and a second rule pertaining to a semantic correspondence between the client query and the target query. To that end, in some cases, the computing system can generate the target query by implementing the example method 2500 shown in FIG.25 and described hereinafter. [00202] At block 2430, the computing system can cause execution of the target query against the database. Causing execution of the target query can include causing a computer- executable component to execute the target query, where the computer-executable component is functionally coupled to the database. The computer-executable component can be one of the connector component(s) 1450 (FIG.14) or can form part of another type of connector component. [00203] At block 2440, the computing system can receive result data satisfying the target query. The data can be received from a target database, via an interface component (e.g., one of the interface modules 1530 (FIG.15)). [00204] At block 2450, the computing system can generate, using the result data, a data structure that controls visualization of the result data at a user interface. The data structure includes the result data. The data structure also can include formatting data and/or formatting metadata that can control the format of a visual representation of the result data in one or multiple chart widgets included in the user interface. The user interface can be, for example, one of the user interfaces 1440 (FIG.14) presented by the client device 1430. [00205] Such a data structure can be generated in numerous ways. For example, a first component within the computing system can receive the result data and can generate a precursor data structure corresponding to the client query as defined by a query language. In an example scenario where the client query is an AA query, the query language is the selection query language described herein. As mentioned, the precursor data structure casts the result data from the target database into a format that can be interpreted or otherwise used for generation of a hypercube representative of the result data. The precursor data structure ATTORNEY DOCKET NO.: 36339.0051P1 can include the result data and metadata that can partially control the format of the visual representation. For example, such metadata can include symbol IDs associated with symbols tables, to permit or otherwise facilitate interaction with the visual representation. In addition, the metadata also can include state metadata defining states (selected or optional, for example). The first component can be embodied in, or can constitute, the query adaptor module 1520 (FIG.15). The first component can then send the precursor data structure to a second component (e.g., a rendering engine within the multiple engines 1506 (FIG.15)) within the computing system. The second component can then generate the formatting data and, in some cases, the formatting metadata that, individually or collectively, define the visual representation of the result data. [00206] At block 2460, the computing system can cause presentation of the visual representation of the result data. Causing presentation of the visual representation can include sending the data structure to a client device that originated selection data for generation of the client query, and causing that client device to present the visual representation of the result data at the user interface. The data structure can be sent programmatically, by the second component, via one of the gateway components 1420 (FIG.14). The second component also can cause presentation of the visual representation at the user interface. [00207] FIG.25 illustrates a flowchart of an example of a method 2500 for generating a target query based on a client query, in accordance with one or more embodiments of this disclosure. The target query is executable against a database, whereas the client query is not executable against that database. The example method 2500 can be implemented as part of transforming the client query into the target when implementing block 2410 (FIG.24). A computing device or a system of computing devices can implement the example method 2500 in its entirety or in part. To that end, each computing device can include computing resources that can implement, or can permit implementing, at least one of the blocks included in the example method 2500. The computing resources include, for example, CPUs, GPUs, TPUs, memory, disk space, incoming bandwidth, and/or outgoing bandwidth, interface(s) (such as I/O interfaces or APIs, or both); controller devices(s); power supplies; a combination of the foregoing; and/or similar resources. For instance, the system of computing devices can include programming interface(s); an operating system; software for configuration and or control of a virtualized environment; firmware; and similar resources. [00208] The system of computing devices can be referred to as a computing system. In some cases, the computing system that implements the example method 2400 also can implement the example method 2500. In such cases, the computing system can perform one ATTORNEY DOCKET NO.: 36339.0051P1 or more operations of the example method 2500 by executing the query adaptor module 1520. [00209] At block 2510, the computing system can receive the client query. The client query can be an AA query defined or otherwise formatted according to selection query language as described herein. [00210] At block 2520, the computing system can determine a syntax structure of the client query by parsing the client query. Determining the syntax structure can include determining element(s) of the content of the client query or one or more types of element(s) of the content of the client query, or both element(s) and type(s) of the element(s) of the content of the client query. Thus, determining the syntax structure can include determining one or more set handle operations defined by the client query. As is described herein, the syntax structure can be represented by an AST. Hence, determining the syntax structure also can include generating the AST and incorporating into the AST the one or more set handle operations as respective nodes. [00211] At block 2530, the computing system can generate, based on the syntax structure, a logical plan corresponding to the client query. For example, the computing system can generate, based on one or more set handle operations included in respective nodes of the AST, the logical plan corresponding to the client query. The logical plan is indicative of the semantics of the client query, and can include a sequence of operations associated with the semantics of the client query. In some cases, generating the logical plan in such a fashion can include applying one or more optimization rules that result in the sequence of operations. [00212] At block 2540, the computing system can generate, using the logical plan corresponding to the client query, a second logical plan corresponding to the target query. The second logical plan is indicative of semantics of the target query, and can include a sequence of operations associated with the semantics of the target query. Generating the second logical plan can include applying a semantic mapping to the logical plan corresponding to the client query. The semantic mapping can include, in some cases, one or more of Rule 1 to Rule 12 described herein. [00213] At block 2550, the computing system can generate, using the second logical plan, the target query. Generating the target query can include generating a query statement associated with the database. Generating the query statement can include mapping the semantics of the target query to one or more expressions according to a database dialect of a query language of the database. As is described herein, the query language can be SQL, MDX query language, or NoSQL query language. ATTORNEY DOCKET NO.: 36339.0051P1 [00214] While not shown in FIG.25, the example method 2500 can include, in some cases, exposing at least one of an optimization interface (e.g., an optimization API) or a customization interface (e.g., a customization API) in accordance with aspects described herein. The computing system can expose the optimization interface and/or the customization interface. [00215] In order to provide some context, the computer-implemented methods and systems of this disclosure can be implemented on the computing environment illustrated in FIG.26 and described below. Similarly, the computer-implemented methods and systems disclosed herein can utilize one or more computing devices to perform one or more functions in one or more locations. FIG.26 is a block diagram illustrating an example of a computing system 2600 for performing the disclosed methods and/or implementing the disclosed systems. The computing system 2600 shown in FIG.26 is only an example of an operating environment and is not intended to suggest any limitation as to the scope of use or functionality of operating environment architecture. Neither should the operating environment be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment. [00216] The computer-implemented methods and systems in accordance with this disclosure can be operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that can be suitable for use with the systems and methods comprise, but are not limited to, personal computers, server computers, laptop devices, and multiprocessor systems. Additional examples comprise set-top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that comprise any of the above systems or devices, and the like. [00217] The processing of the disclosed computer-implemented methods and systems can be performed by software components. The disclosed systems and computer-implemented methods can be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers or other devices. Generally, program modules comprise computer code, routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The disclosed computer-implemented methods can also be practiced in grid-based and distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program ATTORNEY DOCKET NO.: 36339.0051P1 modules can be located in both local and remote computer storage media including memory storage devices. [00218] Further, the systems and computer-implemented methods disclosed herein can be implemented via a general-purpose computing device in the form of a computing device 2601. The components of the computing device 2601 can comprise one or more processors 2603, a system memory 2612, and a system bus 2613 that functionally couples various system components including the one or more processors 2603 to the system memory 2612. The system can utilize parallel computing in some cases. [00219] The system bus 2613 represents one or more of several possible types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, or local bus using any of a variety of bus architectures. The bus 2613, and all buses specified in this description can also be implemented over a wired or wireless network connection and each of the subsystems, including the one or more processors 2603, one or more mass storage devices 2604 (referred to as mass storage 2604), an operating system 2605, software 2606, data 2607, a network adapter 2608, the system memory 2612, an Input/Output Interface 2610, a display adapter 2609, a display device 2611, and a human- machine interface 2602, can be contained within one or more remote computing devices 2614a,b,c at physically separate locations, connected through buses of this form, in effect implementing a fully distributed system. [00220] The computing device 2601 typically comprises a variety of computer-readable media. Exemplary readable media can be any available media that is accessible by the computing device 2601 and comprises, for example and not meant to be limiting, both volatile and non-volatile media, removable and non-removable media. The system memory 2612 comprises computer readable media in the form of volatile memory, such as random access memory (RAM), and/or non-volatile memory, such as read only memory (ROM). The system memory 2612 typically contains data such as the data 2607 and/or program modules such as the operating system 2605 and the software 2606 that are immediately accessible to and/or are presently operated on by the one or more processors 2603. [00221] The computing device 2601 also can comprise other removable/non-removable, volatile/non-volatile computer storage media. As an example, FIG.26 illustrates the mass storage 2604 which can provide non-volatile storage of computer code, computer readable instructions, data structures, program modules, and other data for the computing device 2601. For example and not meant to be limiting, the mass storage 2604 can be embodied in, or can include, a hard disk, a removable magnetic disk, a removable optical disk, magnetic cassettes ATTORNEY DOCKET NO.: 36339.0051P1 or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (ROM), electrically erasable programmable read-only memory (EEPROM), and the like. [00222] Optionally, any number of program modules can be stored on the mass storage 2604, including by way of example, the operating system 2605 and the software 2606. Each of the operating system 2605 and the software 2606 (or some combination thereof) can comprise elements of the programming and the software 2606. The data 2607 can also be stored on the mass storage 2604. The data 2607 can be stored in any of one or more databases. Examples of such databases comprise, DB2®, Microsoft® Access, Microsoft® SQL Server, Oracle®, mySQL, PostgreSQL, and the like. The databases can be centralized or distributed across multiple systems. The software 2606 can include, in some cases, at least some of the multiple resolution modules 1504, and at least some of the interface modules 1530. Execution of the software 2606 by the processor(s) 2603 can cause the computing device 2601 to provide at least some of the functionality described herein in connection with transformation of a first query into a second query that can be executed against a database in order to analyze data in situ within the database, as is described herein. [00223] In some configurations, the software can be replicated across such computing devices. In other configurations, some components of the software 2606 can be localized in a particular one of the computing devices and other components of the software 2606 can be localized in a second particular one of the computing devices. Such distributed embodiments, the computing system can embody, or can constitute the query resolution subsystem 1414. In such embodiments, execution of the software 2606 by at least one processor present in a combination of the computing device 2601 and the remote computing devices 2614a,b,c can cause such a computing system to provide at least some of the functionality described herein in connection with transformation of a first query into a second query that can be executed against a database in order to analyze data in situ within the database, as is described herein. [00224] In another aspect, the user can enter commands and information into the computing device 2601 via an input device (not shown). Examples of such input devices comprise, but are not limited to, a keyboard, pointing device (e.g., a “mouse”), a microphone, a joystick, a scanner, tactile input devices such as gloves, and other body coverings, and the like These and other input devices can be connected to the one or more processors 2603 via the human-machine interface 2602 that is coupled to the system bus 2613, but can be connected by other interface and bus structures, such as a parallel port, game port, an IEEE 1394 Port (also known as a Firewire port), a serial port, or a universal serial bus (USB). ATTORNEY DOCKET NO.: 36339.0051P1 [00225] In yet another aspect, the display device 2611 also can be connected to the system bus 2613 via an interface, such as the display adapter 2609. It is contemplated that the computing device 2601 can have more than one display adapter 2609 and the computing device 2601 can have more than one display device 2611. For example, the display device 2611 can be a monitor, an LCD (Liquid Crystal Display), or a projector. In addition to the display device 2611, other output peripheral devices can comprise components such as speakers (not shown) and a printer (not shown) which can be connected to the computing device 2601 via the Input/Output Interface 2610. Any operation and/or result of the methods can be output in any form to an output device. Such output can be any form of visual representation, including, but not limited to, textual, graphical, animation, audio, tactile, and the like. The display device 2611 and computing device 2601 can be part of one device, or separate devices. [00226] The computing device 2601 can operate in a networked environment using logical connections to one or more remote computing devices 2614a,b,c and/or one or multiple storage server devices 2620. For example, a remote computing device can be a personal computer, portable computer, smartphone, a server, a router, a network computer, a peer device or other common network node, and so on. In some cases, the one or multiple storage server devices 2620 can embody, or can constitute, the storage subsystem 1418 (FIG.14). Logical connections between the computing device 2601 and a remote computing device 2614a,b,c and a server storage device of the server storage device(s) 2620 can be made via a network 2615, such as a local area network (LAN) and/or a general wide area network (WAN). Such network connections can be through the network adapter 2608. The network adapter 2608 can be implemented in both wired and wireless environments. In an aspect, one or more of the remote computing devices 2614a,b,c can comprise an external engine and/or an interface to the external engine. [00227] For purposes of illustration, application programs and other executable program components such as the operating system 2605 are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computing device 2601, and are executed by the one or more processors 2603 of the computer. An implementation of the software 2606 can be stored on or transmitted across some form of computer-readable media. Any of the disclosed methods can be performed by computer readable instructions embodied on computer- readable media. Computer-readable media can be any available media that can be accessed by a computer. By way of example and not meant to be limiting, computer-readable media ATTORNEY DOCKET NO.: 36339.0051P1 can comprise “computer storage media” and “communications media.” “Computer storage media” comprise volatile and non-volatile, removable and non-removable media implemented in any methods or technology for storage of information such as computer- readable instructions, data structures, program modules, or other data. Exemplary computer storage media comprises, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer. [00228] It is to be understood that the computer-implemented methods and systems described here are not limited to specific operations, processes, components, or structure described, or to the order or particular combination of such operations or components as described. It is also to be understood that the terminology used herein is for the purpose of describing exemplary embodiments only and is not intended to be restrictive or limiting. [00229] As used herein the singular forms “a,” “an,” and “the” include both singular and plural referents unless the context clearly dictates otherwise. Values expressed as approximations, by use of antecedents such as “about” or “approximately,” shall include reasonable variations from the referenced values. If such approximate values are included with ranges, not only are the endpoints considered approximations, the magnitude of the range shall also be considered an approximation. Lists are to be considered exemplary and not restricted or limited to the elements comprising the list or to the order in which the elements have been listed unless the context clearly dictates otherwise. [00230] Throughout the specification and claims of this disclosure, the following words have the meaning that is set forth: “comprise” and variations of the word, such as “comprising” and “comprises,” mean including but not limited to, and are not intended to exclude, for example, other additives, components, integers, or operations. “Include” and variations of the word, such as “including” are not intended to mean something that is restricted or limited to what is indicated as being included, or to exclude what is not indicated. “May” means something that is permissive but not restrictive or limiting. “Optional” or “optionally” means something that may or may not be included without changing the result or what is being described. “Prefer” and variations of the word such as “preferred” or “preferably” mean something that is exemplary and more ideal, but not required. “Such as” means something that serves simply as an example. ATTORNEY DOCKET NO.: 36339.0051P1 [00231] Operations and components described herein as being used to perform the disclosed methods and construct the disclosed systems are illustrative unless the context clearly dictates otherwise. It is to be understood that when combinations, subsets, interactions, groups, etc. of these operations and components are disclosed, that while specific reference of each various individual and collective combinations and permutation of these may not be explicitly disclosed, each is specifically contemplated and described herein, for all methods and systems. This applies to all aspects of this application including, but not limited to, operations in disclosed methods and/or the components disclosed in the systems. Thus, if there are a variety of additional operations that can be performed or components that can be added, it is understood that each of these additional operations can be performed and components added with any specific embodiment or combination of embodiments of the disclosed systems and methods. [00232] Embodiments of this disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, the methods and systems may take the form of a computer program product on a computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium. Any suitable computer-readable storage medium may be utilized including hard disks, CD-ROMs, optical storage devices, or magnetic storage devices, whether internal, networked, or cloud-based. [00233] Embodiments of this disclosure have been described with reference to diagrams, flowcharts, and other illustrations of computer-implemented methods, systems, apparatuses, and computer program products. Each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, respectively, can be implemented by processor-accessible instructions. Such instructions can include, for example, computer program instructions (e.g., processor-readable and/or processor-executable instructions). The processor-accessible instructions can be built (e.g., linked and compiled) and retained in processor-executable form in one or multiple memory devices or one or many other processor-accessible non-transitory storage media. These computer program instructions (built or otherwise) may be loaded onto a general-purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine. The loaded computer program instructions can be accessed and executed by one or multiple processors or other types of processing circuitry. In response to execution, the loaded computer program instructions provide the functionality described in connection with flowchart blocks (individually or in a particular combination) or blocks in block ATTORNEY DOCKET NO.: 36339.0051P1 diagrams (individually or in a particular combination). Thus, such instructions which execute on the computer or other programmable data processing apparatus create a means for implementing the functions specified in the flowchart blocks (individually or in a particular combination) or blocks in block diagrams (individually or in a particular combination). [00234] These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including processor-accessible instruction (e.g., processor-readable instructions and/or processor-executable instructions) to implement the function specified in the flowchart blocks (individually or in a particular combination) or blocks in block diagrams (individually or in a particular combination). The computer program instructions (built or otherwise) may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operations to be performed on the computer or other programmable apparatus to produce a computer-implemented process. The series of operations can be performed in response to execution by one or more processor or other types of processing circuitry. Thus, such instructions that execute on the computer or other programmable apparatus provide operations for implementing the functions specified in the flowchart blocks (individually or in a particular combination) or blocks in block diagrams (individually or in a particular combination). [00235] Accordingly, blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions in connection with such diagrams and/or flowchart illustrations, combinations of operations for performing the specified functions and program instruction means for performing the specified functions. Each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, can be implemented by special purpose hardware-based computer systems that perform the specified functions or operations, or combinations of special purpose hardware and computer instructions. [00236] The methods and systems can employ artificial intelligence techniques such as machine learning and iterative learning. Examples of such techniques include, but are not limited to, expert systems, case-based reasoning, Bayesian networks, behavior-based AI, neural networks, fuzzy systems, evolutionary computation (e.g. genetic algorithms), swarm intelligence (e.g. ant algorithms), and hybrid intelligent systems (e.g. expert inference rules generated through a neural network or production rules from statistical learning). ATTORNEY DOCKET NO.: 36339.0051P1 [00237] While the computer-implemented methods, apparatuses, devices, and systems have been described in connection with preferred embodiments and specific examples, it is not intended that the scope be limited to the particular embodiments set forth, as the embodiments herein are intended in all respects to be illustrative rather than restrictive. [00238] Unless otherwise expressly stated, it is in no way intended that any method set forth herein be construed as requiring that its operations be performed in a specific order. Accordingly, where a method claim does not actually recite an order to be followed by its operations or it is not otherwise specifically stated in the claims or descriptions that the operations are to be limited to a specific order, it is in no way intended that an order be inferred, in any respect. This holds for any possible non-express basis for interpretation, including: matters of logic with respect to arrangement of operations or operational flow; plain meaning derived from grammatical organization or punctuation; the number or type of embodiments described in the specification. [00239] It will be apparent to those skilled in the art that various modifications and variations can be made without departing from the scope or spirit. Other embodiments will be apparent to those skilled in the art from consideration of the specification and practice disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit being indicated by the following claims.