Language-based manipulation of data visualizations

By utilizing natural language processing and interactive vocabularies, the challenges of data visualization on devices with limited functionality, such as mobile devices, have been addressed. This enables language-based manipulation of datasets, improving user interaction efficiency and experience.

CN113490934BActive Publication Date: 2026-03-20ORACLE INT CORP
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-01-27
Publication Date
2026-03-20

AI Technical Summary

Technical Problem

When performing visual data analysis, mobile devices and other limited computing devices struggle to effectively utilize manual controls for data visualization, especially when the screen is small and physical keyboards and mice are lacking, thus limiting user interaction.

Method used

It receives user input through natural language processing technology, parses user intent, and manipulates the presentation of multidimensional datasets. It utilizes interactive vocabularies and system commands to achieve data visualization manipulation, and is suitable for devices with limited functionality.

Benefits of technology

It improves the efficiency and user experience of data visualization on devices with limited functionality, enhances the interactivity of dataset subsets, and adapts to user input methods on different devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113490934B_ABST
    Figure CN113490934B_ABST
Patent Text Reader

Abstract

Techniques for language-based manipulation for data visualizations are disclosed. A system presents a data visualization representing a multidimensional dataset. The system receives user input including a language associated with a particular interaction with the data visualization. The particular interaction is configured to manipulate a presentation of one or more subsets of the multidimensional dataset. The user input does not identify any particular subset of the multidimensional dataset. The system determines that the interaction is applicable to two or more candidate subsets of the multidimensional dataset and presents the two or more candidate subsets as candidates for the particular interaction. The system receives user input selecting a particular subset from the candidates. Based on the user input, the system generates a complete command corresponding to the particular interaction. Based on the complete command, the system performs the particular interaction to manipulate the presentation of the particular subset in the data visualization.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present disclosure relates to data analysis. In particular, the present disclosure relates to visual data analysis. BACKGROUND

[0002] Data analysis uses programmatic data processing techniques to extract meaningful information from raw data. In this context, "raw data" refers to data that, without further processing, cannot supply some or all of the meaningful information provided by data analysis. Raw data can have been subjected to other processing prior to data analysis processing. For example, data generated by a business application (i.e., an application that supports one or more business operations, such as sales, supply chain management, human resources, finance, customer relationship management, and / or another business operation or combination thereof) can be considered raw data for data analysis purposes.

[0003] Data analysis can use many different kinds of programmatic data processing techniques. For example, data analysis can use one or more of: data filtering; aggregation; deduplication; trend analysis; statistical analysis; and / or another processing technique or combination thereof. Data analysis can apply raw data to a machine learning model, a statistical model, a predictive model, and / or another data processing model or combination thereof. Data analysis can produce meaningful information in a variety of different formats. For example, data analysis can produce database entries, charts, graphs, tables, lists, alphanumeric text, and / or another format or combination thereof.

[0004] Visual data analysis supplies a graphical user interface that allows one or more users to view and interact with information produced by data analysis. The graphical user interface presents a data visualization that corresponds to a visual representation of the information produced by data analysis. The graphical user interface includes controls (i.e., interactive user interface elements) that allow a user to manually manipulate the presentation of elements in the data visualization. Depending on the complexity of the data visualization, the graphical user interface can include many controls. Alternatively or additionally, to let a user manipulate the presentation of elements in the data visualization, use of the controls can require a sophisticated understanding of the underlying data analysis system.

[0005] Some computing devices are not well suited for using manual controls for visual data analysis. For example, mobile devices (e.g., mobile phones, tablets, etc.) typically have relatively small screens with less available space for presenting data visualizations and / or manual controls. Additionally, some computing devices lack physical keyboards and / or mice, thus limiting the modes of user interaction that can be used to access controls. Due to such limitations, the functionality and / or controls available on a mobile version of a visual data analysis tool can be limited relative to a version running on a non-mobile computing device.

[0006] In a computer system, a multidimensional database represents data as a hypercube or multidimensional array. A multidimensional database has multiple dimensions. Each dimension corresponds to a different index of data. As an example, a multidimensional database stores employee data. In this example, different dimensions can include "employee," "department," and "salary." Different dimensions can be visualized as axes of a cube. A multidimensional database can have any number of dimensions. A particular data value within a multidimensional database can be referred to as an attribute. For example, for the dimension "department," a multidimensional database can include the attributes "sales," "legal," "human resources," etc. Data analysis can use programmatic data processing techniques to extract meaningful information from data in a multidimensional database. A visual data analysis tool can supply a graphical user interface that allows one or more users to view and interact with the information.

[0007] The methods described in this section are methods that can be employed, but need not be the methods previously conceived or employed. Thus, unless otherwise indicated, it should not be assumed that any of the methods described in this section qualify as prior art merely by virtue of their inclusion in this section. BRIEF DESCRIPTION OF DRAWINGS

[0008] In the drawings, embodiments are shown by way of example, and not limitation, in the figures of the drawings. It should be noted that a reference to "an" or "one" embodiment in this disclosure is not necessarily a reference to the same embodiment and they mean at least one. In the drawings:

[0009] Figure 1 illustrates a system in accordance with one or more embodiments;

[0010] Figures 2A-2C illustrates a set of operations for language-based manipulation for data visualization in accordance with one or more embodiments;

[0011] Figures 3A-3B illustrates an example of a multidimensional database structure in accordance with one or more embodiments;

[0012] Figure 4 illustrates an example of an interaction vocabulary in accordance with one or more embodiments;

[0013] Figures 5A-5I illustrates an example in accordance with one or more embodiments;

[0014] Figures 6A-6G illustrates an example in accordance with one or more embodiments; and

[0015] Figure 7 shows a block diagram illustrating a computer system in accordance with one or more embodiments. DETAILED DESCRIPTION

[0016] In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding. One or more embodiments can be practiced without these specific details. Features described in one embodiment can be combined with features described in a different embodiment. In some examples, well-known structures and devices are described with reference to the flowchart illustrations to avoid unnecessarily obscuring the present application.

[0017] 1. OVERALL SUMMARY

[0018] 2. ARCHITECTURE SUMMARY

[0019] 3. LANGUAGE-BASED MANIPULATION OF DATA VISUALIZATIONS

[0020] 4. ILLUSTRATIVE EXAMPLE

[0021] 4.1 Multidimensional Database Structure

[0022] 4.2 Interaction Vocabulary

[0023] 4.3 User Interface

[0024] 5. OTHER; EXTENSIONS

[0025] 6. HARDWARE OVERVIEW

[0026] 7. COMPUTER NETWORKS AND CLOUD NETWORKS

[0027] 8. MICROSERVICE APPLICATION

[0028] 1. OVERALL SUMMARY

[0029] One or more embodiments manipulate data visualizations. Given a current data visualization representing a data set, the system receives language-based user input (i.e., text and / or speech) and, based on the user input, manipulates the presentation of one or more subsets of the data set in the data visualization. In embodiments, the data set is a multidimensional data set and the system receives language-based user input to manipulate the presentation of dimensions, attributes, and / or measures presented in the data visualization.

[0030] Further, one or more embodiments assist users in providing language-based user input. Given user input that identifies an interaction with a data visualization but does not identify any subset of the data set, the system determines one or more candidate subsets of the data set to which the interaction applies. The system receives additional user input selecting one or more of the candidate subset(s). Presenting candidate subsets for interaction facilitates the language-based user input process, particularly on devices with limited functionality and / or controls (e.g., mobile devices with smaller screens and / or lacking physical keyboards and mice).

[0031] The data analysis system can determine that the interaction is applicable to candidate subsets of the data set in a variety of different ways. In embodiments, the subset of data that has been presented in the data visualization is a candidate for the interaction. Alternatively or additionally, the data analysis system can identify one or more candidate subsets in the metadata associated with the data visualization. Alternatively or additionally, the data analysis system can determine that the interaction is applicable to a particular type of data. The data analysis system can identify one or more candidate subsets of the data set as being of that particular type. Determining that the interaction is applicable to one or more particular candidate subsets can improve the relevance of the candidates presented to the user, thereby improving the speed and efficiency of the user experience.

[0032] One or more embodiments described in the specification and / or claimed in the claims can not be included in the general overview.

[0033] 2. System Architecture Overview

[0034] Figure 1 A system 100 in accordance with one or more embodiments is illustrated. As shown in Figure 1 The system 100 includes a user device 102, a data analysis server 108, a data repository 116, and various components thereof, in one or more embodiments. The system 100 can include more or fewer components than those shown in Figure 1 Figure 1 The components shown in can be local to or remote from each other. Figure 1 The components shown in can be implemented in software and / or hardware. Each component can be distributed over multiple applications and / or machines. Multiple components can be combined into a single application and / or machine. Operations described with respect to one component can instead be performed by another component. Additional embodiments and / or examples related to computer networks are described below.

[0035] In embodiments, the data analysis service 108 refers to hardware and / or software configured to perform operations for language-based manipulation of data visualizations described herein. Examples of operations for language-based manipulation of data visualizations are described below. The data analysis service 108 can be configured to extract meaningful information from data sets 118 stored in the data repository 116 using programmatic data processing techniques. Alternatively or additionally, the data analysis service 108 can be configured to generate data visualizations 106 and transmit the data visualizations to the user device 102 for presentation in the user interface 104. The data visualizations 106 correspond to visual representations of information produced by the data analysis.

[0036] ​In embodiments, user interface 104 includes controls (i.e., interactive user interface elements) that allow a user to manually manipulate the presentation of elements in data visualization 106. More generally, user interface 104 includes hardware and / or software configured to facilitate communication between a user and data analysis service 108. User interface 104 renders user interface elements and receives input via the user interface elements. Examples of interfaces include graphical user interfaces (GUIs), command line interfaces (CLIs), haptic interfaces, and voice command interfaces. Examples of user interface elements include checkboxes, radio buttons, drop-down lists, list boxes, buttons, toggle keys, text fields, date and time selectors, command lines, sliders, pages, and forms.

[0037] In embodiments, different components of user interface 104 are specified in different languages. The behavior of user interface elements is specified in a dynamic programming language, such as JavaScript. The content of user interface elements is specified in a markup language, such as HyperText Markup Language (HTML) or XML User Interface Language (XUL). The layout of user interface elements is specified in a style sheet language, such as Cascading Style Sheets (CSS). Alternatively, user interface 104 is specified in one or more other languages, such as Java, C, or C++.

[0038] In embodiments, data analysis service 108 includes system commands 110. System commands 110 include commands that data analysis service 108 executes to perform data analysis functions. In particular, system commands 110 include one or more commands that data analysis service 108 executes to manipulate the presentation of one or more subsets of data set 118 in data visualization 106. As used herein, a "subset" of a data set refers to one or more discrete elements in the data set and / or one or more groupings thereof. A subset of a multidimensional data set can include dimensions, attributes, measures, and / or any other subset of the multidimensional data set. A subset of a relational database can include tables, rows, columns, cells, and / or any other subset of the relational database. Examples of commands for manipulating data visualizations are described below.

[0039] Alternatively or additionally, system commands 110 can include one or more commands that query data repository 116. For example, if data repository 116 is a multidimensional database, then system commands 110 can include one or more commands that generate a Multidimensional Expressions (MDX) query to be applied to data repository 116. If data repository 116 is a relational database, then system commands 110 can include one or more commands that generate a Structured Query Language (SQL) query to be applied to data repository 116. Alternatively or additionally, data analysis service 108 can be configured to generate and / or execute queries as part of system commands 110 that manipulate data visualization 106.

[0040] In embodiments, the data analysis service 108 includes a natural language processor 112. The natural language processor 112 refers to hardware and / or software configured to perform the operations described herein for extracting meaning from language-based user input (i.e., textual and / or spoken input). In particular, the natural language processor 112 can be configured to receive language-based user input and map the language-based user input to one or more system commands 110. The natural language processor 112 can use natural language analysis (e.g., using a machine learning model trained to perform natural language analysis and / or another natural language analysis or a combination thereof) to interpret the language-based user input. In particular, the natural language processor 112 can isolate relevant words and / or phrases in the language-based user input based on context. The natural language processor 112 can use an interaction vocabulary 114 to determine whether the words or phrases correspond to one or more system commands 110. In embodiments, the interaction vocabulary 114 includes mappings of natural language words and / or phrases to particular system commands 110. The data analysis service 108 can be configured to present candidates for applying the indicated system command(s) 110, as described below.

[0041] In embodiments, the data repository 116 is any type of storage unit and / or device (e.g., a file system, a database, a collection of tables, or any other storage mechanism) for storing data sets 118. In addition, the data repository 116 can include multiple different storage units and / or devices. The multiple different storage units and / or devices can or can not be of the same type or located at the same physical site. Additionally, the data repository 116 can be implemented or performed by the same computing system as that of the other components of the system 100 or by a different computing system. Alternatively, or additionally, the data repository 116 can be implemented or performed by a computing system that is separate from one or more of the other components of the system 100. The data repository 116 can be communicatively coupled to the other components of the system 100 via a direct connection or via a network.

[0042] In embodiments, the data repository 116 is a multidimensional database. In particular, the data sets 118 can be multidimensional data sets that include one or more dimensions 120 and one or more attributes 122. Alternatively, or additionally, the data sets 118 can include one or more measures (not shown). An example of a multidimensional database structure is described below.

[0043] In embodiments, the data analysis service 108 is implemented on one or more digital devices Figure 1One or more components are shown. The term "digital device" generally refers to any hardware device that includes a processor. A digital device can refer to a physical device that executes an application or virtual machine. Examples of digital devices include computers, tablets, laptops, desktops, netbooks, servers, web servers, network policy servers, proxy servers, general-purpose machines, function-specific hardware devices, hardware routers, hardware switches, hardware firewalls, hardware network address translation (NAT), hardware load balancers, mainframes, televisions, content receivers, set-top boxes, printers, mobile phones, smartphones, personal digital assistants ("PDAs"), wireless receivers and / or transmitters, base stations, communications management equipment, routers, switches, controllers, access points, and / or client devices.

[0044] 3. Language-based manipulation of data visualization

[0045] Figures 2A-2C The illustration depicts a set of language-based manipulation operations for data visualization according to one or more embodiments. Figures 2A-2C One or more operations shown can be modified, rearranged, or omitted entirely. Therefore, Figures 2A-2C The specific sequence of operations shown should not be construed as limiting the scope of one or more embodiments.

[0046] In an embodiment, the system (e.g., Figure 1 System 100 presents a data visualization representing a cube (operation 202). To present the data visualization, the data analytics service can use programmatic data processing techniques to extract meaningful information from the dataset (e.g., a cube in a multidimensional database). The data analytics service generates the data visualization and transmits it to the user device for presentation in the user interface. Alternatively or additionally, the implementation can be practiced using a dataset from a relational database and / or another dataset not used as a cube.

[0047] In this embodiment, the system receives user input (operation 204). User input can be language-based, i.e., text-based input and / or verbal input. For example, the user can type the input using a physical or virtual keyboard. Alternatively or additionally, the user can speak the input into a microphone. Alternatively or additionally, the user can select a user interface command corresponding to a specific user input.

[0048] In embodiments, the system performs natural language processing on the user input (operation 206). Natural language processing uses natural language analysis to interpret the language-based user input. Natural language analysis isolates relevant words and / or phrases in the language-based user input based on context. In particular, natural language analysis can isolate one or more verbs in the language-based user input. The verb(s) can correspond to one or more interactions that manipulate the data visualization. Alternatively or additionally, natural language analysis can isolate one or more nouns in the language-based user input. The noun(s) can correspond to one or more subsets of the multidimensional dataset to which the interaction(s) are to be applied.

[0049] In embodiments, the system determines whether the user input maps to an interaction in the interaction vocabulary (operation 208). In particular, the system can determine whether the verb in the user input corresponds to a system command or a synonym of a system command in the interaction vocabulary. If the user input does not map to an interaction in the interaction vocabulary, the system can reject the user input (operation 210). The system can present an error message indicating that the user input does not indicate any recognized interaction. Alternatively or additionally, the system can present a message suggesting one or more other valid interactions.

[0050] In embodiments, the user input indicates an interaction that manipulates the presentation of a subset of the multidimensional dataset in the data visualization. The interaction can manipulate the presentation of a dimension of the multidimensional dataset. Alternatively or additionally, the interaction can manipulate the presentation of an attribute in the multidimensional dataset. Alternatively or additionally, the interaction can manipulate the presentation of a measure in the multidimensional dataset. Alternatively or additionally, the interaction can manipulate the presentation mode of the data visualization. Examples of interactions that manipulate the presentation of a subset of the multidimensional dataset are described below.

[0051] In embodiments, some interactions do not require the user to indicate any subset of the multidimensional dataset (e.g., a dimension, an attribute, or a measure) to which the interaction is to be applied. For example, Figure 4 An example of an interaction vocabulary that includes the system command "swap" is illustrated. In this example, the "swap" command changes the order of the dimensions presented in the data visualization. If the data visualization presents regions broken down by product, the "swap" command manipulates the data visualization to instead present products broken down by region. Because the "swap" command knows which dimensions to swap based on context (i.e., the dimensions presented in the current data visualization), the "swap" command does not require the user to indicate which dimensions to swap. In contrast, in the example above, the "swap" command does not know which dimensions to swap without the user indicating which dimensions to swap. Figure 4In embodiments, the "highlight" command highlights a particular attribute in a data visualization. In embodiments, the "highlight" command requires the user to indicate the attribute to highlight. In embodiments, the system determines whether the interaction specified by the user input requires indicating a subset of the multidimensional dataset (operation 212). If the interaction does require indicating a subset of the multidimensional dataset, then the system determines whether the user input indicates the required subset(s) (operation 214). If the user input does not indicate the required subset(s), then the system proceeds to identify one or more candidate subsets for the interaction, as follows.

[0052] In embodiments, the system determines that the interaction applies to a particular type of data in the multidimensional dataset (operation 216). Determining the particular type of data to which the interaction applies can be based on one or more words or phrases in the user input. For example, the word "country" is generally associated with a location, while the word "year" is generally associated with a time. Alternatively or additionally, determining the particular type of data to which the interaction applies can be based on the interaction itself, i.e., which types of data the interaction is configured to manipulate in a data visualization.

[0053] For example, FIG. 4 illustrates an example of an interaction vocabulary that includes the system command "compare to." In this example, the "compare to" command presents a comparison of data associated with two or more attributes. If the user input includes the phrase "compare to" and a location-based attribute (e.g., a "Midwest" region attribute) is currently highlighted in the data visualization, then the system can determine that the interaction applies to a location-based attribute. In embodiments, determining the particular type of data to which the interaction applies helps the system present relevant candidate subsets for the interaction.

[0054] In embodiments, the system determines which subset(s) of the multidimensional dataset are candidates for the interaction (operation 218). Determining that a subset is a candidate for the interaction can be based on the type of data to which the interaction applies (e.g., as determined in operation 216 above). The system can determine which subsets (e.g., dimensions, attributes, and / or measures) belong to that particular data type. The system can identify the subsets of the applicable data type as candidate subsets for the interaction.

[0055] Alternatively or additionally, determining that a subset is a candidate for the interaction can be based on which subset(s) are currently presented in the data visualization. For example, Figure 4An example of an interaction vocabulary that includes the system command "highlight" is illustrated. In this example, the "highlight" command highlights a particular attribute in a data visualization. The system can determine that only attributes that are currently present in the data visualization are candidates for the "highlight" command. In general, if an interaction is configured to manipulate the presentation of a subset that is already present in a data visualization, then the system can determine that only those subsets that are already present are candidates for the interaction.

[0056] Alternatively or additionally, to determine the subsets that are candidates for the interaction, the system can determine that the subsets are represented in metadata associated with the data visualization. The metadata associated with the data visualization can indicate which subset(s) of the multidimensional data set are available for manipulation in the data visualization. Alternatively or additionally, the metadata associated with the data visualization can indicate relationships between different subsets of the multidimensional data set. In one example, the metadata associated with the multidimensional data set includes a representation of a data hierarchy for the multidimensional data set. The system can examine the data hierarchy to determine which subset(s) are candidates for the interaction. The subsets represented in the metadata associated with the multidimensional data set can be subsets that are not currently presented in the data visualization.

[0057] In embodiments, the system determines how many subsets of the multidimensional data set are candidates for the interaction (operation 220), i.e., how many subsets the system has identified as candidates. In embodiments, if the system does not identify any candidate subsets, then the system rejects the user input (operation 221). The system can present an error message indicating that the interaction specified in the user input is not applicable to any available subset of the multidimensional data set. Alternatively or additionally, the system can present a message suggesting alternative interactions for which one or more candidate subsets are available. In embodiments, if the system identifies only one candidate subset, then the system proceeds to generate a complete command corresponding to the interaction with the data visualization using the single candidate subset (operation 226, described in further detail below). The system can first present the single candidate subset to the user and / or prompt the user to indicate whether to proceed using the identified subset.

[0058] In embodiments, if the system identifies two or more candidate subsets, then additional user input can be required to select which subset to use for the interaction. In embodiments, the system presents the candidates to the user (operation 222). The system can present the candidates in a number of different ways. The system can present the candidates in a list, as shown in the example described below. Alternatively or additionally, the system can present the candidates in an audio format, using a speaker in the user device to "speak" the names of the candidates. In embodiments, in response to presenting the candidate subsets, the system receives user input selecting one or more of the presented candidates (operation 224).

[0059] In embodiments, after the system has identified one or more subsets of the multidimensional dataset for the interaction (e.g., if only one candidate subset is identified and / or the system receives user input selecting one or more candidate subsets), the system generates a complete command corresponding to the interaction with the data visualization (operation 226). The complete command identifies the interaction and the subset(s) of the multidimensional dataset to which the interaction applies. If the interaction does not require identification of a particular subset (e.g., as determined in operation 212, as described above), then a complete command can not have to be generated.

[0060] In embodiments, the system determines whether a query is required to perform the interaction (operation 228). A query can be required for an interaction if the interaction requires identification of a particular subset of the multidimensional dataset. A query can be required if the interaction presents data from a dimension that is not currently presented in the data visualization and that was not retrieved when preparing the currently presented data visualization. For example, if the interaction presents data from a different state associated with a sales region that is not currently presented in the data visualization and that was not retrieved when preparing the currently presented data visualization, then a query can be required.

[0061] In embodiments, one or more interactions that manipulate the presentation of one or more subsets of the multidimensional dataset in the data visualization are performed without querying the multidimensional database. The interactions can manipulate the presentation of data that is already presented in the data visualization. Alternatively or additionally, the interactions can manipulate the presentation of data that was previously retrieved, even if the data is not currently presented in the data visualization. In one example, the data visualization presents data associated with sales regions. In this example, "region" is a dimension of the multidimensional dataset. In preparing the data visualization, the system queried the multidimensional database to retrieve data associated with different states for each sales region. In this example, "state" is a sub-dimension of the "region" dimension. To perform an interaction that presents data associated with different states, the system can use the data that was already retrieved without querying the multidimensional database again.

[0062] In embodiments, the system performs the interaction to manipulate the presentation of one or more subsets of the multidimensional dataset (operation 232). As a result of the interaction, the manner in which the subset(s) are presented is different than before the interaction. Data associated with a particular subset can be filtered, hidden, revealed, highlighted, sorted, aggregated, subdivided into component data, and / or another manipulation thereof. The interaction can manipulate the presentation of a subset of the multidimensional dataset in many different ways. Examples of interactions that manipulate the presentation of a subset of the multidimensional dataset are described below.

[0063] 4. Illustrative Examples

[0064] For clarity, detailed examples are described below. The components and / or operations described below should be understood as specific examples that can not apply to certain embodiments. As such, the components and / or operations described below should not be interpreted as limiting the scope of any claims.

[0065] 4.1 Multidimensional Database Structure

[0066] Figures 3A-3B An example of a multidimensional database structure 300 is illustrated in accordance with one or more embodiments. In this example, as shown in Figure 3A multidimensional database structure 300 includes a number of top-level dimensions 302: customer name 304; order identifier (ID) 306; product category 308; location 310; shipping method 316; and zip code 318. In addition, multidimensional database structure 300 includes a hierarchy of sub-dimensions. Region 312 is a dimension that is also a sub-dimension of location 310. State 314 is a dimension that is also a sub-dimension of location 310. As used herein, the term "dimension" can refer to a top-level dimension and / or a sub-dimension.

[0067] In embodiments, a multidimensional database includes one or more measures. As used herein, a measure is a particular grouping of homogenous, quantifiable data. Each measure has a corresponding value. For example, a "profit" measure can be "$35000." In this example, as shown in Figure 3B multidimensional database structure 300 includes a number of top-level measures: delivery time 322; total sales 328; and profit 330. In addition, multidimensional database structure 300 includes a hierarchy of sub-measures. Year 324 is a measure that is also a sub-measure of delivery time 322. Quarter 326 is a measure that is also a sub-measure of year 324. As used herein, the term "measure" can refer to a top-level measure and / or a sub-measure.

[0068] 4.2 Interaction Glossary

[0069] As described above, when the system receives a language-based user input, the system can use an interaction glossary to determine whether the user input maps to a system command. Figure 4 An example of an interaction glossary 400 is illustrated in accordance with one or more embodiments. As shown in Figure 4 a system command can have one or more synonyms. To determine whether a user input maps to a system command, the system can determine whether the user input includes the system command itself or a synonym thereof. Although Figure 4 various words and terms are illustrated as corresponding to particular interactions, many different words and / or terms can be used to describe many different interactions.

[0070] In embodiments, the interaction shows all attributes of one or more particular dimensions. In Figure 4 In the illustrated example, the interaction vocabulary 400 includes the system command "show all" without any synonyms. Given the user input "show all" and a particular dimension, the system can show all attributes of that dimension. For example, given a multi-dimensional dataset with a "region" dimension, the system can receive user input to "show all regions." In embodiments, the user input includes a selection from a set of presented candidate dimensions.

[0071] In embodiments, the interaction subdivides data within the currently presented dimension by a particular sub-dimension, i.e., subdivides data to the level of a particular sub-dimension. In addition, the interaction can present data associated with a sub-dimension that was not presented prior to the interaction. In Figure 4 In the illustrated example, the interaction vocabulary includes the system command "view by" as well as synonyms "break down by," "split by," and "switch dimension to." Given the user input "view by" and a particular sub-dimension, the system can subdivide data within the currently presented dimension by the specified sub-dimension without requiring additional user input to select any dimension. For example, given a current data visualization presenting sales data by a particular state, the system can receive user input of "view by county" to subdivide the sales data by counties of the state. In embodiments, the user input includes a selection from a set of presented candidate dimensions.

[0072] In embodiments, if the user input is "view by" and the dimension is not a sub-dimension of the currently presented dimension, the system can add a dimension to the current data visualization to allow the system to subdivide data by the specified dimension. For example, given a current data visualization presenting sales data aggregated by year (a time dimension), a user can request "view by region" (a location dimension). In this example, the system can retain both the time dimension and the location dimension in the current data visualization. Alternatively, the system can replace the time dimension with the location dimension. To decide whether to retain or replace the currently presented dimension, the system can prompt user preferences, reference system rules and / or settings, use machine learning derived from previous usage patterns, and / or decide in another way whether to retain or replace the currently presented dimension, or a combination thereof. The user can subsequently swap dimensions using the "swap" dimension described herein.

[0073] In embodiments, the interaction aggregates data by a particular dimension. In Figure 4In the illustrated example, the interaction vocabulary 400 includes the system command "view by," as well as the synonyms "group by," "aggregate by," "cluster by," and "sum up by." Given user input of "view by" and a particular dimension, the system can aggregate data by that dimension. For example, the current data visualization can present data aggregated by state. The system can receive user input to instead "view by product." As another example, the system can receive user input to "view by region," i.e., to further aggregate data specific to states by region. In embodiments, the user input includes a selection from a set of candidate dimensions presented.

[0074] As shown in the illustrated example, the interaction vocabulary 400 includes two different "view by" commands. In general, the interaction vocabulary can include multiple commands of the same name. In embodiments, the system is configured to disambiguate between commands. In particular, the system can determine which command to use based on additional user input and / or contextual data. In the above example, the system can determine which "view by" command to apply based on the dimension specified in the user input. Figure 4 In embodiments, the interaction sorts data by a particular dimension. In the illustrated example, the interaction vocabulary 400 includes the system command "sort by," as well as the synonym "order by." Given user input of "sort by" and a particular dimension, the system can sort data by that dimension. For example, the current data visualization can present data sorted by region. The system can receive user input to instead "sort by state." In embodiments, the user input includes a selection from a set of candidate dimensions presented.

[0075] Figure 4 In embodiments, the interaction swaps the priority of two dimensions in a data visualization. In the illustrated example, the interaction vocabulary 400 includes the system command "swap," as well as the synonyms "pivot" and "swap rows and columns." Given user input of "swap," the system can swap the priority of two dimensions currently presented in the data visualization without requiring additional user input to select the dimensions. For example, the system can receive user input to "swap" from viewing regions broken down by product to viewing products broken down by region.

[0076] In embodiments, the interaction swaps the priority of two dimensions in a data visualization. In the illustrated example, the interaction vocabulary 400 includes the system command "swap," as well as the synonyms "pivot" and "swap rows and columns." Given user input of "swap," the system can swap the priority of two dimensions currently presented in the data visualization without requiring additional user input to select the dimensions. For example, the system can receive user input to "swap" from viewing regions broken down by product to viewing products broken down by region. Figure 4

[0077] ​​In this embodiment, the interaction segments the data within the currently presented dimension by its most immediate sub-dimension; that is, it segments the data down to the level of the most immediate sub-dimension. Furthermore, the interaction can present data associated with sub-dimensions not previously presented. In the example shown in Figure 4, the interaction vocabulary 400 includes the system command "zoom in". Given the user input "zoom in", the system can segment the data within the currently presented dimension by its most immediate sub-dimension without requiring additional user input to select any dimension. For example, given a current data visualization presenting sales data for a specific region, the system can receive user input to "zoom in" to segment the sales data by state within that region.

[0078] In this embodiment, the interaction removes data segmentation through specific sub-dimensions; that is, it aggregates data through the most direct parent dimension. Figure 4 In the example shown, the interactive vocabulary 400 includes the system command "zoom out". Given the user input "zoom out", the system can remove data segments without requiring additional user input to select any dimensions. For example, given a data visualization presenting sales data from multiple states in a region, the system could receive user input to "zoom out" to aggregate the data by region.

[0079] In this embodiment, the interaction sorts the data using a specific metric. Figure 4 In the example shown, the interactive vocabulary 400 includes the system command "sort by" and the synonym "order by". Given user input "sort by" and a specific metric, the system can sort the data by that metric. For example, the current data visualization could present data sorted by name. The system could also receive user input instead of "sort by profit". In this embodiment, user input includes selection from a set of presented candidate metrics. If the system supports sorting by both dimensions and metrics, then the system can present a set of candidate dimensions and metrics. Alternatively or additionally, the system can be configured to present candidate dimensions or candidate metrics based on the context of the user input. Generally, the system can support commands with the same name and / or synonyms and can rely on user input and / or context to determine which command to use.

[0080] In one embodiment, the interaction switches from viewing data aggregated by one metric to viewing data aggregated by another metric. Figure 4In the illustrated example, the interaction vocabulary 400 includes the system command "switch to," as well as the synonyms "switch measure to" and "show." Given the user input "switch to" and a particular measure, the system can switch to viewing data aggregated by that measure. For example, the current data visualization can present sales data aggregated by profit. The system can receive user input to instead "switch to sales" to view data aggregated by sales quantity. In embodiments, the user input includes selecting from a presented set of candidate measures.

[0081] In embodiments, the interaction highlights one or more attributes. In this context, "highlight" can mean shading, underlining, bolding, italicizing, and / or other manipulations or combinations thereof to make the specified attribute(s) more visually prominent in the data visualization. In embodiments, the user input includes selecting from a presented set of candidate attributes. Figure 4 In the illustrated example, the interaction vocabulary 400 includes the system command "highlight," as well as the synonyms "brush" and "select." Given the user input "highlight" and a particular attribute, the system can highlight that attribute. For example, the current data visualization can present data for multiple states in the Northeast sales region. The system can receive user input to "highlight Massachusetts" to highlight the data for that state. In embodiments, the user input includes selecting from a presented set of candidate attributes.

[0082] In embodiments, the interaction removes the presentation of data for all attributes except a particular attribute. In this context, "remove" can mean to hide, to exclude, to omit, and / or to otherwise not present. Figure 4 In the illustrated example, the interaction vocabulary 400 includes the system command "focus on," as well as the synonym "filter to." Given the user input "focus on" and a particular attribute, the system can remove the presentation of data for all attributes except that attribute. For example, the current data visualization can present data for multiple states in the Northeast sales region. The system can receive user input to "focus on Massachusetts" to remove the presentation of data for all states except that state. In embodiments, the user input includes selecting from a presented set of candidate attributes.

[0083] In embodiments, the interaction presents a comparison of data associated with two or more attributes. In this context, "comparison" can mean a juxtaposition, a side-by-side presentation, a contrast, and / or a comparison of the data associated with the two or more attributes. Figure 4In the illustrated example, the interaction vocabulary 400 includes the system command "compare to," as well as the synonym "add." Given user input of "compare to" and a particular attribute, the system can present (a) data associated with the currently presented attribute versus (b) data associated with that particular attribute. For example, the current data visualization can present data for sales in Massachusetts. The system can receive user input to "compare to" New York to present a comparison of data associated with Massachusetts and New York. In embodiments, the user input includes a selection from a set of presented candidate attributes.

[0084] In embodiments, an interaction can be a composite interaction, i.e., a single interaction combines the functionality of two or more other interactions. For example, a single interaction can both (a) remove the presentation of data for all attributes other than a particular attribute (e.g., "focus on" described above) and (b) subdivide data within the currently presented dimension by its most immediate sub-dimension (e.g., "zoom in" described above). Such a composite interaction effectively presents one or more sub-attributes of the specified attribute at the most immediate sub-dimension level. In Figure 4 In the illustrated example, the interaction vocabulary 400 includes the system command "drill into," as well as the synonym "focus and zoom in on." Given user input of "focus and zoom in on" and a particular attribute, the system can (a) remove the presentation of data for all attributes other than that attribute and (b) present one or more sub-attributes of that attribute. For example, the current data visualization can present data for a plurality of sales regions. The system can receive user input to "drill into" the Midwest to remove the presentation of data for all regions other than the Midwest and to subdivide the sales data by the states of that region. In embodiments, the user input includes a selection from a set of presented candidate attributes.

[0085] In embodiments, when viewing data for only a single attribute (e.g., "focus on" described above), an interaction can instead present data for a different attribute. For example, a user can select "zoom in on" a particular attribute to view data for that attribute. The system can instead present data for a different attribute. In Figures 5A-5IIn the illustrated example, the interaction vocabulary 400 includes the system command "goto," as well as the synonym "scroll to." Given the user input "go to" and a particular attribute, the system can remove the presentation of data for the current attribute, and instead present data for the specified attribute. For example, the current data visualization can present sales data for 2018. The system can receive user input to "go to 2019" to remove the presentation of sales data for 2018, and instead present sales data for 2019. In embodiments, the user input includes a selection from a set of presented candidate attributes.

[0086] In embodiments, the interactions do not operate on a particular subset of the multidimensional dataset, but still manipulate how the data is presented in the data visualization. For example, the interaction vocabulary 400 includes the system command "show as," as well as the synonym "switch graph type to." Given the user input "show as," the system can present a set of candidate visualization modes (e.g., pie chart, table, etc.). The system can receive user input selecting one of the visualization modes to show the data visualization as that mode. Figures 5A-5I

[0087] 4.3 User Interface

[0088] Figure 5A FIGURE 1 illustrates an example in accordance with one or more embodiments. In particular, Figure 5A FIGURE 2 illustrates an example of language-based manipulation of a data visualization using a user interface 500 on a mobile device. In Figure 5B In the illustrated example, the user interface 500 presents a data visualization that plots a profit chart over time. The input box at the bottom of the screen shows language-based user input that has been provided to the user interface 500. In Figure 5C In the illustrated example, the input box is empty. Alternatively, the input box can show default text, such as "type something," "try 'group by location,'" and / or some other default text. If the user taps the input box, then the system presents a virtual keyboard. In addition, the system can receive user input via a microphone in the mobile device.

[0089] In the illustrated example, the system presents a virtual keyboard in response to the user tapping the input box. Above the input box, the system presents a list of suggestions and help topics. The list of suggestions can include context-based default suggestions, and / or can include a history of previous user input. In Figure 5D In the illustrated example, the system receives user input corresponding to the letter "g." In the list above the input box, the system presents suggested inputs, including words that begin with the letter "g." In Figure 4 Figure 5E ​​In this example, the system receives user input corresponding to the letter "r" and narrows the scope of the suggested list accordingly. In this example, the system receives user input that selects the interaction "group by" from the suggested list (e.g., by speaking or tapping the screen). In Figure 5F In the example interaction dictionary, "group by" is a synonym of the system command "view by" (i.e., maps to "view by") as described above.

[0090] In Figure 5G In response to the user selecting the interaction "group by," the system updates the list above the input box to present a list of candidate dimensions for the interaction. In Figure 5I In this example, the system receives user input corresponding to the letter "c." In the list above the input box, the system presents a list of dimensions that include words that begin with the letter "c." In Figures 6A-6G In this example, the system receives additional user input corresponding to the letter "a" and narrows the suggested list to a single candidate dimension, "product category." The system receives user input that selects this dimension for the interaction.

[0091] In embodiments, after receiving user input that selects from one or more candidate subsets, the system allows the user to provide additional user input(s). In FIG. 5H, in the list above the input box, the system provides additional suggestions to add to the interaction "group by category." The system does not receive user input that selects any of these options. Instead, the system receives user input that selects "Go," which corresponds to an instruction to execute the interaction. In Figures 6A-6G In this example, the system presents a modified data visualization based on the user input, in which the profit is grouped by product category.

[0092] Figure 6A FIGURE 1 illustrates an example in accordance with one or more embodiments. In particular, Figure 6B FIGURE 6 illustrates an example of language-based manipulation of a data visualization using a user interface 600 on a mobile device. In Figure 6C In this example, the user interface 600 presents a data visualization that plots a profit chart over time. The system receives user input corresponding to the letter "g." In the list above the input box, the system presents suggested inputs that have words that begin with the letter "g." In this example, the list includes both dimensions ("global holidays," "team goals," and "team perks") and interactions ("group by" and "go to"). In Figure 6DIn the middle, the system receives additional user input corresponding to the letters "ros." In the list above the input box, the system now presents suggested inputs with words that start with the letters "gros." In this example, the revised list includes attributes ("Gross Auto Group" and "Cutler & Gross LLD") and measures ("Gross Margin," "Gross Profit Margin," and "Gross Profit"). The system receives user input selecting the measure "Gross Margin." In the middle, the system presents additional input for aggregating or filtering the gross margin data in the list above the input box. In this example, the suggestions "2018," "North America," and "ABC Inc" are attributes. In response to selecting one of the attributes, the system is configured to present the gross margin associated with the selected attribute. The options "By Region" and "By Country" refer to dimensions. In response to selecting one of the dimensions, the system will present the gross margin broken down by the selected dimension. In the middle, the system receives additional user input corresponding to the letters "p." In response to the user input, the system presents a different list of suggestions with words that start with the letter "p." The system receives user input selecting "Per Region" to break down the gross margin data by region. In the middle, the system presents additional options for aggregating or filtering the gross margin data in the list above the input box. In particular, the system presents options to view the median gross margin, gross margin greater than a particular amount, gross margin aggregated by year, gross margin for the current year, or gross margin for the East Coast region. In the middle, the system receives user input corresponding to the letters "ytd," which means "year to date." In the middle, the system presents a revised data visualization based on the user input with the gross margin year to date aggregated by sales region. Figure 6E Figure 6F Figure 6G Figure 7 ​

[0093] 5. Other; Extensions

[0094] Embodiments are directed to systems with one or more devices that include hardware processors and are configured to perform any of the operations described herein and / or claimed in any of the claims appended below.

[0095] In embodiments, a non-transitory computer-readable storage medium includes instructions that, when executed by one or more hardware processors, cause performance of any of the operations described herein and / or claimed in any of the claims.

[0096] ​​​​​According to one or more embodiments, any combination of the features and functionality described herein can be used. In the foregoing specification, embodiments of the application have been described with reference to numerous specific details that can vary from implementation to implementation. Thus, the specification and drawings are to be regarded as illustrative rather than restrictive. The sole and exclusive indicator of the scope of the application, and what is intended by the applicants to be the scope of the application, is the literal and equivalent scope of the claims that issue from this application, in whatever form codified.

[0097] 6. Hardware Overview

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

[0099] For example, ​ FIG. 6 is a block diagram that illustrates a computer system 700 upon which an embodiment of the application can be implemented. Computer system 700 includes a bus 702 or other communication mechanism for communicating information, and a hardware processor 704 coupled with bus 702 for processing information. Hardware processor 704 can be, for example, a general purpose microprocessor.

[0100] Computer system 700 also includes a main memory 706, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 702 for storing information and instructions to be executed by processor 704. Main memory 706 also can be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 704. Such instructions, when stored in non-transitory storage media accessible to processor 704, render computer system 700 into a special-purpose machine that is customized to perform the operations specified in the instructions.

[0101] The computer system 700 also includes a read only memory (ROM) 708 or other static storage device coupled to the bus 702 for storing static information and instructions for the processor 704. A storage device 710, such as a magnetic disk or optical disk, is provided and coupled to the bus 702 for storing information and instructions.

[0102] The computer system 700 can be coupled via the bus 702 to a display 712, such as a liquid crystal display (LCD), plasma display, electronic ink display, cathode ray tube (CRT) monitor, or any other kind of device for displaying information to a computer user. An input device 714, including alphanumeric and other keys, can be coupled to the bus 702 for communicating information and command selections to the processor 704. Alternatively or additionally, the computer system 700 can receive user input via a cursor control 716, such as a mouse, a trackball, a touchpad, a touchscreen, or a cursor direction keys for communicating direction information and command selections to the processor 704 and for controlling cursor movement on the display 712. Such input devices typically have two degrees of freedom in the plane of a surface upon which the device is operated, allowing the device to specify positions in a plane. The display 712 can be configured to receive user input via one or more pressure sensitive sensors, multi-touch sensors, and / or gesture sensors. Alternatively or additionally, the computer system 700 can receive user input via a microphone, a video camera, and / or some other kind of user input device (not shown).

[0103] The computer system 700 can implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and / or program logic which in combination with the computer system causes or programs the computer system 700 to be a special-purpose machine. According to one embodiment, the techniques herein are performed by the computer system 700 in response to the processor 704 executing one or more sequences of instructions contained in the main memory 706. Such instructions can be read into the main memory 706 from another storage medium, such as the storage device 710. Execution of the sequences of instructions contained in the main memory 706 causes the processor 704 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry can be used in place of or in combination with software instructions.

[0104] The term "storage media" as used herein refers to any non-transitory media that store data and / or instructions that cause a machine to operate in a specific fashion. Such storage media can comprise non-volatile media and / or volatile media. Non-volatile media includes, for example, optical disks or magnetic disks, such as storage device 710. Volatile media includes dynamic memory, such as main memory 706. Common forms of storage media include, for example, a floppy disk, a flexible disk, a hard disk, a solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a programmable read-only memory (PROM), and erasable PROM (EPROM), a FLASH- EPROM, non-volatile random-access memory (NVRAM), any other memory chip or cartridge, content addressable memory (CAM), and ternary content addressable memory (TCAM).

[0105] Storage media are distinct from, but can be used in combination with, transmission media. Transmission media participate in transferring information between storage media. For example, transmission media includes coaxial cables, copper wire, and optical fibers, including wires that comprise bus 702. Transmission media can also take the form of acoustic or light waves, such as those generated during radio frequency and infrared data communications.

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

[0107] Computer system 700 also includes a communication interface 718 coupled to bus 702. Communication interface 718 provides a two-way data communication coupling to a network link 720 that is connected to a local network 722. For example, communication interface 718 can be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 718 can be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links can also be implemented. In any such implementation, communication interface 718 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.

[0108] Network link 720 typically provides data communication through one or more networks to other data devices. For example, network link 720 can provide a connection through local network 722 to a host computer 724 or to data equipment operated by an Internet Service Provider (ISP) 726. ISP 726 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the "Internet" 728. Local network 722 and Internet 728 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 720 and through communication interface 718, which carry the digital data to and from computer system 700, are example forms of transmission media for digital data.

[0109] Computer system 700 can send messages and receive data, including program code, through the network(s), network link(s) 720 and communication interface(s) 718. In the Internet example, a server 730 might transmit a requested code for an application program through Internet 728, ISP 726, local network 722 and communication interface 718.

[0110] The received code can be executed by processor 704 as it is received, and / or stored in storage device 710, or other non-volatile storage for later execution.

[0111] 7. Computer networks and cloud networks

[0112] In one or more embodiments, a computer network provides connectivity between a set of nodes running software that utilizes techniques as described herein. The nodes can be local to each other and / or remote from each other. The nodes are connected by a set of links. Examples of links include coaxial cable, unshielded twisted cable, copper wire, fiber optics, and virtual links.

[0113] A subset of nodes implement the computer network. Examples of such nodes include switches, routers, firewalls, and network address translators (NATs). Another subset of nodes use the computer network. Such nodes (also referred to as “hosts”) can execute client processes and / or server processes. Client processes request computational services (such as execution of a particular application and / or storage of a particular quantity of data). Server processes respond by executing the requested services and / or returning corresponding data.

[0114] A computer network can be a physical network, including physical nodes connected by physical links. A physical node is any digital device. A physical node can be a function-specific hardware device, such as a hardware switch, a hardware router, a hardware firewall, and a hardware NAT. Additionally or alternatively, a physical node can be any physical resource that provides computational power to perform tasks, such as a physical resource configured to execute various virtual machines and / or applications that perform corresponding functions. A physical link is a physical medium that connects two or more physical nodes. Examples of links include coaxial cable, unshielded twisted pair, copper cable, and optical fiber.

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

[0116] In embodiments, a client can be local to and / or remote from a computer network. A client can access a computer network through other computer networks (such as a private network or the Internet). A client can transmit requests to a computer network using a communication protocol (such as the hypertext transfer protocol (HTTP)). Requests are transmitted through an interface such as a client interface (such as a web browser), a programmatic interface, or an application programming interface (API).

[0117] In embodiments, a computer network provides connectivity between clients and network resources. Network resources include hardware and / or software configured to execute server processes. Examples of network resources include processors, data storage devices, virtual machines, containers, and / or software applications. Network resources are shared among multiple clients. Clients independently of one another request computing services from the computer network. Network resources are dynamically allocated to requests and / or clients on demand. Allocation of network resources to each request and / or client can be scaled up or down based on, for example, (a) computing services requested by a particular client, (b) aggregate computing services requested by a particular tenant, and / or (c) aggregate computing services requested by the computer network. Such a computer network can be referred to as a “cloud network.”

[0118] In embodiments, a service provider provides a cloud network to one or more end users. The cloud network can implement various service models, including but not limited to software as a service (SaaS), platform as a service (PaaS), and infrastructure as a service (IaaS). In SaaS, the service provider provides end users with the ability to use applications executing on network resources of the service provider. In PaaS, the service provider provides end users with the ability to deploy custom applications onto network resources. The custom applications can be created using programming languages, libraries, services, and tools supported by the service provider. In IaaS, the service provider provides end users with the ability to provision processing, storage, networking, and other basic computing resources provided by network resources. Any applications, including operating systems, can be deployed onto the network resources.

[0119] In embodiments, a computer network can implement various deployment models, including but not limited to private cloud, public cloud, and hybrid cloud. In a private cloud, network resources are provisioned for the exclusive use of a particular group of one or more entities (as the term “entity” is used herein, it refers to a business, organization, individual, or other entity). The network resources can be local to the premises of the particular group of entities and / or remote from the premises of the particular group of entities. In a public cloud, cloud resources are provisioned for multiple entities independent of one another (also referred to as “tenants” or “customers”). The computer network and its network resources are accessed by clients corresponding to different tenants. Such a computer network can be referred to as a “multi-tenant computer network.” Several tenants can use the same particular network resources at different times and / or simultaneously. The network resources can be local to the premises of the tenants and / or remote from the premises of the tenants. In a hybrid cloud, a computer network includes a private cloud and a public cloud. An interface between the private cloud and the public cloud allows for portability of data and applications. Data stored at the private cloud and data stored at the public cloud can be exchanged through the interface. Applications implemented at the private cloud and applications implemented at the public cloud can have dependencies on one another. Calls from an application at the private cloud to an application at the public cloud (and vice versa) can be performed through the interface.

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

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

[0122] In embodiments, each tenant is associated with a tenant ID. Each network resource of the multi-tenant computer network is tagged with a tenant ID. A tenant is only allowed to access a particular network resource if the tenant and the particular network resource are associated with the same tenant ID.

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

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

[0125] In embodiments, a subscription list indicates which tenants have access to which applications. For each application, a list of tenant IDs of tenants authorized to access the application is stored. A tenant is only allowed to access a particular application if the tenant’s tenant ID is included in the subscription list corresponding to the particular application.

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

[0127] 8. Microservice application

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

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

[0130] In one or more embodiments, microservices can be connected via a GUI. For example, microservices can be displayed as logical blocks within windows, frames, other elements of the GUI. A user can drag and drop microservices into areas of the GUI for building an application. A user can use directed arrows or any other GUI elements to connect the output of one microservice to the input of another microservice. The application builder can run validation tests (e.g., by checking data types, size limits, etc.) to confirm that the output and input are compatible.

[0131] Triggers

[0132] According to one or more embodiments, the above-described techniques can be encapsulated into microservices. In other words, microservices can trigger notifications (that go into the microservice manager for optional use by other plugged-in applications referred to herein as "target" microservices) based on the above-described techniques and / or microservices can be represented as GUI blocks and connected to one or more other microservices. Trigger conditions can include absolute or relative thresholds of values and / or absolute or relative thresholds of amounts or durations of data to analyze, such that a trigger to the microservice manager occurs whenever a plugged-in microservice application detects a threshold being crossed. For example, a user can request a trigger to go into the microservice manager when the microservice application detects that a value has crossed a trigger threshold.

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

[0134] Action

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

[0136] In one or more embodiments, the exposed action can receive as input a request to increase or decrease an existing in-application alert threshold. The input can identify the existing in-application alert threshold and whether to increase, decrease, or delete the threshold. Additionally or alternatively, the input can request that the microservice application create a new in-application alert threshold. The in-application alert can trigger an alert to the user when the user is logged into the application, or can use a default or user-selected alert mechanism available within the microservice application itself instead of triggering an alert to the user through other applications inserted into the microservice manager.

[0137] In one or more embodiments, the microservice application can generate and provide output based on input that identifies, locates, or provides historical data and defines a degree or range of the requested output. The action, when triggered, causes the microservice application to provide, store, or display the output, for example as a data model or as aggregated data describing the data model.

[0138] In the foregoing specification, embodiments of the application have been described with reference to numerous specific details that can vary from implementation to implementation. Thus, the specification and drawings are to be regarded as illustrative rather than restrictive. The sole and exclusive indicator of the scope of the application, and what is intended by the applicants to be the scope of the application, is the literal and equivalent scope of the claims that issue from this application, in whatever form codified.

Claims

1. One or more non-transitory machine-readable media storing instructions, which, when executed by one or more processors, cause: A data visualization representing a multidimensional dataset comprising multiple dimensions is presented via a graphical user interface on the screen of a computing device, wherein each of the multiple dimensions includes one or more attributes from multiple attributes in the multidimensional dataset; The graphical user interface receives initial user input, including language associated with specific interactions related to data visualization, in its input boxes. The specific interaction is configured to manipulate the presentation of one or more subsets of a cube in data visualization. The first user input does not recognize any specific subset of the cube; Determine the metadata associated with the data visualization presented in the graphical user interface, which at least indicates the representation of a specific subset of the cube in the data visualization; Based on metadata that at least indicates the representation of a specific subset of the cube in data visualization: select the specific subset of the cube as a candidate for the specific interaction; Present the specific subset of the cube as candidates for the specific interaction on the graphical user interface; Receive second user input via a graphical user interface, selecting a specific subset of the cube presented on the graphical user interface for the specific interaction; Based at least on the input from the first user and the input from the second user, generate a complete command corresponding to the specific interaction of the data visualization; Based on the complete command: execute the specific interaction to manipulate the presentation of the specific subset of the cube in a data visualization presented on a graphical user.

2. The one or more non-transitory machine-readable media of claim 1, further storing instructions that, when executed by one or more processors, cause: Generate a query based on the complete command, wherein performing the specific interaction includes applying the query to a cube.

3. One or more non-transitory machine-readable media as claimed in claim 1, wherein the specific interaction is performed without querying a cube.

4. The one or more non-transitory machine-readable media of claim 1, further storing instructions that, when executed by one or more processors, cause: Based on the interactive vocabulary, the language of the first input is determined to be mapped to a specific action.

5. The one or more non-transitory machine-readable media of claim 1, further storing instructions that, when executed by one or more processors, cause: The specific interaction is determined to be applicable to two or more candidate subsets of the cube by at least the following: The two or more candidate subsets of the identified cube are displayed in the data visualization.

6. The one or more non-transitory machine-readable media of claim 1, further storing instructions that, when executed by one or more processors, cause: The specific interaction is determined to be applicable to two or more candidate subsets of the cube by at least the following: The two or more candidate subsets of the cube are determined to be represented in the metadata associated with data visualization.

7. The one or more non-transitory machine-readable media of claim 1, further storing instructions that, when executed by one or more processors, cause: The specific interaction is determined to be applicable to two or more candidate subsets of the cube by at least the following: Based at least on the context of the first user input, determine that the specific interaction is applicable to a specific type of data in the cube; Determine that two or more candidate subsets of the cube belong to the specific type.

8. The one or more non-transitory machine-readable media of claim 1, wherein the first user input includes one or more of voice input or text input provided to a mobile data analytics application operating on a mobile device.

9. One or more non-transitory machine-readable media as claimed in claim 1, wherein the particular interaction illustrates all attributes of a particular dimension in a modified data visualization, and two or more candidate subsets of the cube are dimensions of the cube.

10. One or more non-transitory machine-readable media as claimed in claim 1, wherein the specific interaction aggregates data in a modified data visualization according to a specific dimension, and two or more candidate subsets of the cube are dimensions of the cube.

11. One or more non-transitory machine-readable media as claimed in claim 1, wherein the specific interaction sorts the data in the modified data visualization according to a specific dimension, and two or more candidate subsets of the cube are dimensions of the cube.

12. One or more non-transitory machine-readable media as claimed in claim 1, wherein the specific interaction highlights a specific attribute in the modified data visualization, and two or more candidate subsets of the cube are attributes in the cube.

13. One or more non-transitory machine-readable media as claimed in claim 1, wherein the specific interaction removes all attributes in the data visualization except for the target attribute, and two or more candidate subsets of the cube are attributes in the cube.

14. One or more non-transitory machine-readable media as claimed in claim 12, wherein the particular attribute is associated with a particular dimension among the plurality of dimensions, and wherein the particular interaction further presents one or more sub-attributes of the particular attribute associated with a sub-dimension of the particular dimension.

15. One or more non-transitory machine-readable media as claimed in claim 12, wherein prior to performing the particular interaction, the data visualization presents data associated with attributes different from the particular attribute.

16. One or more non-transitory machine-readable media as claimed in claim 1, wherein the particular interaction presents a comparison of data associated with two or more particular attributes in a data visualization, and two or more candidate subsets of the cube are attributes in the cube.

17. One or more non-transitory machine-readable media as claimed in claim 1, wherein the particular interaction presents data in a modified data visualization based on a particular metric, and two or more candidate subsets of the cube are metrics in the cube.

18. The one or more non-transitory machine-readable media of claim 1, further storing instructions that, when executed by one or more processors, cause: Based on the interactive vocabulary, the language of the first input is determined to be mapped to a specific action. The specific interaction described herein is performed without querying the cube. The first user input includes one or more of voice or text input provided to mobile data analytics applications operating on mobile devices. Two or more candidate subsets of the cube are one or more of the following: the dimensions of the cube; the attributes of the cube; or the measures of the cube.

19. The one or more non-transitory machine-readable media as described in claim 1, further comprising: Determining the metadata also instructs how a second subset of the cube is represented in data visualization; Based on the metadata indicating the representation of a second subset of the cube in the data visualization: Select the second subset of the cube as the second candidate for the specific interaction; The presentation also includes a second subset of the cube as a second candidate subset of the specific interaction.

20. A method comprising: A data visualization representing a multidimensional dataset comprising multiple dimensions is presented via a graphical user interface on the screen of a computing device, wherein each of the multiple dimensions includes one or more attributes from multiple attributes in the multidimensional dataset; The graphical user interface receives initial user input, including language associated with specific interactions related to data visualization, in its input boxes. The specific interaction is configured to manipulate the presentation of one or more subsets of a cube in data visualization. The first user input does not recognize any specific subset of the cube; Determine the metadata associated with the data visualization presented in the graphical user interface, which at least indicates the representation of a specific subset of the cube in the data visualization; Based on metadata that at least indicates the representation of a specific subset of the cube in data visualization: select the specific subset of the cube as a candidate for the specific interaction; Present the specific subset of the cube as candidates for the specific interaction on the graphical user interface; Receive second user input via a graphical user interface, selecting a specific subset of the cube presented on the graphical user interface for the specific interaction; Based at least on the input from the first user and the input from the second user, generate a complete command corresponding to the specific interaction of the data visualization; Based on this complete command: execute the specific interaction to manipulate the presentation of the specific subset of the cube in the data visualization presented on the graphical user interface. The method is performed by at least one device including a hardware processor.

21. The method of claim 20, further comprising: Generate a query based on the complete command, wherein performing the specific interaction includes applying the query to a cube.

22. The method of claim 20, wherein the specific interaction is performed without querying the cube.

23. The method of claim 20, further comprising: Based on the interactive vocabulary, the language of the first input is determined to be mapped to a specific action.

24. The method of claim 20, further comprising: The specific interaction is determined to be applicable to two or more candidate subsets of the cube by at least the following: The two or more candidate subsets of the identified cube are displayed in the data visualization.

25. The method of claim 20, further comprising: The specific interaction is determined to be applicable to two or more candidate subsets of the cube by at least the following: The two or more candidate subsets of the cube are determined to be represented in the metadata associated with data visualization.

26. The method of claim 20, further comprising: The specific interaction is determined to be applicable to two or more candidate subsets of the cube by at least the following: Based at least on the context of the first user input, determine that the specific interaction is applicable to a specific type of data in the cube; Determine that two or more candidate subsets of the cube belong to the specific type.

27. The method of claim 20, wherein the first user input includes one or more of voice input or text input provided to a mobile data analytics application operating on a mobile device.

28. The method of claim 20, wherein the specific interaction illustrates all attributes of a specific dimension in the modified data visualization, and two or more candidate subsets of the cube are dimensions of the cube.

29. The method of claim 20, wherein the specific interaction aggregates data in the modified data visualization according to a specific dimension, and two or more candidate subsets of the cube are dimensions of the cube.

30. The method of claim 20, wherein the specific interaction sorts the data in the modified data visualization according to a specific dimension, and two or more candidate subsets of the cube are dimensions of the cube.

31. The method of claim 20, wherein the specific interaction highlights a specific attribute in the modified data visualization, and two or more candidate subsets of the cube are attributes in the cube.

32. The method of claim 20, wherein the specific interaction removes all attributes from the data visualization except for the target attribute, and two or more candidate subsets of the cube are attributes in the cube.

33. The method of claim 31, wherein the particular attribute is associated with a particular dimension among the plurality of dimensions, and wherein the particular interaction further presents one or more sub-attributes of the particular attribute associated with a sub-dimension of the particular dimension.

34. The method of claim 31, wherein prior to performing the specific interaction, the data visualization presents data associated with attributes that are different from the specific attribute.

35. The method of claim 20, wherein the particular interactive presentation compares data associated with two or more particular attributes in the data visualization, and the two or more candidate subsets of the cube are attributes in the cube.

36. The method of claim 20, wherein the specific interaction presents data in a modified data visualization based on a specific metric, and two or more candidate subsets of the cube are metrics in the cube.

37. The method of claim 20, further comprising: Based on the interactive vocabulary, the language of the first input is determined to be mapped to a specific action. The specific interaction described herein is performed without querying the cube. The first user input includes one or more of voice or text input provided to mobile data analytics applications operating on mobile devices. Two or more candidate subsets of the cube are one or more of the following: the dimensions of the cube; the attributes of the cube; or the measures of the cube.

38. The method of claim 20, further comprising: Determining the metadata also instructs how a second subset of the cube is represented in data visualization; Based on the metadata indicating the representation of a second subset of the cube in the data visualization: Select the second subset of the cube as the second candidate for the specific interaction; The presentation also includes a second subset of the cube as a second candidate subset of the specific interaction.

39. A system comprising: At least one device, including a hardware processor; The system is configured to perform the following operations: A data visualization representing a multidimensional dataset comprising multiple dimensions is presented via a graphical user interface on the screen of a computing device, wherein each of the multiple dimensions includes one or more attributes from multiple attributes in the multidimensional dataset; The graphical user interface receives initial user input, including language associated with specific interactions related to data visualization, in its input boxes. The specific interaction is configured to manipulate the presentation of one or more subsets of a cube in data visualization. The first user input does not recognize any specific subset of the cube; Determine the metadata associated with the data visualization presented in the graphical user interface, which at least indicates the representation of a specific subset of the cube in the data visualization; Based on metadata that at least indicates the representation of a specific subset of the cube in data visualization: select the specific subset of the cube as a candidate for the specific interaction; Present the specific subset of the cube as a candidate for the specific interaction on the graphical user interface; Receive second user input via a graphical user interface, selecting a specific subset of the cube presented on the graphical user interface for the specific interaction; Based at least on the input from the first user and the input from the second user, generate a complete command corresponding to the specific interaction of the data visualization; Based on the complete command: execute the specific interaction to manipulate the presentation of the specific subset of the cube in the data visualization presented on the graphical user interface.

40. The system of claim 39, wherein the system is further configured to perform the method of any one of claims 21-38.

41. A computer program product comprising instructions that, when executed by one or more processors of a computer, cause the computer to perform the method as described in any one of claims 20-38.

Citation Information

Patent Citations

  • Method and system for setting up multi-dimension data set in relation database using metadats

    CN1508728A

  • Systems and methods for semantic icon encoding in data visualizations

    US9858292B1