Automatic data model generation
The automated data model generation system addresses the challenges of managing vast and unfamiliar data sources by facilitating efficient data model creation and visualization, simplifying the process for organizations.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- TABLEAU SOFTWARE INC
- Filing Date
- 2021-09-07
- Publication Date
- 2026-06-30
AI Technical Summary
Organizations face challenges in generating data models due to the vast amount of data exceeding immediate needs, unfamiliar data sources, and the requirement for advanced data design skills, leading to difficulties in replicating or organizing data models effectively.
A system and method for automated data model generation using processors to manage data sources, generate working data models, and visualize data fields and models, allowing for user interaction and model updates.
Facilitates efficient generation and visualization of data models, reducing the need for advanced skills and enabling organizations to organize and present data conveniently and securely.
Smart Images

Figure 0007882602000001 
Figure 0007882602000002 
Figure 0007882602000003
Abstract
Description
Technical Field
[0001] The present invention generally relates to data analysis, and more specifically, although not exclusively, to the generation of data models.
Background Art
[0002] Organizations are generating and collecting increasingly more data. This data can be associated with different parts of an organization, such as consumer activities, manufacturing activities, customer service, server logs, etc. In some cases, various different data sources or data models may be developed to represent information that an organization may be interested in analyzing. Also, in some cases, the amount of data available to an analyst may exceed the analyst's immediate or local needs. Further, in some cases, some of the data sources or data models available to an analyst may be organized in ways that are unfamiliar or irrelevant to the analyst. Similarly, in some cases, an analyst may need to replicate a data design or data model previously provided by another analyst due to the difficulty in discovering previously provided data models or data sources. Also, in some embodiments, considering the complex nature of some data sources or data models, an analyst may require advanced data design skills and in-depth knowledge of underlying data systems to generate their own data models. Therefore, the present invention has been made in view of these considerations and others.
Brief Description of the Drawings
[0003] Non-limiting and non-exhaustive embodiments of this innovation are described with reference to the following drawings. In the drawings, like reference numerals refer to like parts throughout the various figures unless otherwise specified. For a better understanding of the technological innovation being described, reference is made to the detailed description of the various embodiments below, which should be read in conjunction with the accompanying drawings.
[0004] [Figure 1]This diagram shows a system environment in which various embodiments can be implemented. [Figure 2] This figure shows a schematic embodiment of a client computer. [Figure 3] This figure shows a schematic embodiment of a network computer. [Figure 4] This figure shows the logical architecture of a system for automated data model generation, according to one or more of its various embodiments. [Figure 5A] This figure shows a logical representation of a portion of the user interface for automated data model generation, based on one or more of various embodiments. [Figure 5B] This figure shows a logical representation of a portion of the user interface for automated data model generation, based on one or more of various embodiments. [Figure 5C] This figure shows a logical representation of a portion of the user interface for automated data model generation, based on one or more of various embodiments. [Figure 5D] This figure shows a logical representation of a portion of the user interface for automated data model generation, based on one or more of various embodiments. [Figure 5E] This figure shows a logical representation of a portion of the user interface for automated data model generation, based on one or more of various embodiments. [Figure 6] This figure shows a logical representation of a portion of the user interface for automated data model generation, based on one or more of various embodiments. [Figure 7] This diagram shows an overview flowchart of the automated data model generation process using one or more of the various embodiments. [Figure 8] This diagram shows a flowchart of the automated data model generation process using one or more of the various embodiments. [Figure 9] This diagram shows a flowchart of the automated data model generation process using one or more of the various embodiments. [Figure 10]This diagram shows a flowchart of the automated data model generation process using one or more of the various embodiments. [Modes for carrying out the invention]
[0005] Various embodiments are described more fully below with reference to the accompanying drawings, which form some of the various embodiments and illustrate specific exemplary embodiments in which the present invention may be carried out. However, embodiments may be embodied in many different forms and should not be construed as being limited to the embodiments described herein, but rather these embodiments are provided so that this disclosure is thorough and complete and can fully convey the scope of embodiments to those skilled in the art. Among other things, various embodiments may be methods, systems, media or devices. Thus, various embodiments may take the form of entirely hardware embodiments, entirely software embodiments or embodiments combining software and hardware aspects. Accordingly, the following detailed description should not be construed as restrictive.
[0006] Throughout this specification and the claims, the following terms have the meanings expressly associated herein unless the context clearly indicates otherwise. As used herein, the phrase “in one embodiment” does not necessarily refer to the same embodiment, but it may. Furthermore, as used herein, the phrase “in another embodiment” does not necessarily refer to a different embodiment, but it may. Thus, various embodiments can be readily combined without departing from the scope or spirit of the invention, as described below.
[0007] In addition, as used herein, the term "or" is an inclusive "or" operator and is equivalent to the term "and / or" unless the context clearly indicates otherwise. The term "based on" is not exclusive and allows for additional factors not mentioned unless the context clearly indicates otherwise. Furthermore, throughout this specification, the meanings of "a," "an," and "the" include multiple references. The meaning of "in" includes "in" and "on."
[0008] In the exemplary embodiments, the following terms are also used herein in accordance with their corresponding meanings unless the context clearly indicates otherwise.
[0009] As used herein, the term “engine” refers to logic embodied in hardware or software instructions, such instructions may be written in programming languages such as C, C++, Objective-C, COBOL, Java®, PHP, Perl, JavaScript, Ruby, VBScript, and Microsoft .NET® such as C#. An engine may be compiled into an executable program or written in an interpreted programming language. A software engine may be callable from other engines or from itself. As described herein, an engine refers to one or more logical modules that can be merged with other engines or applications or divided into sub-engines. An engine may be stored in a non-temporary computer-readable medium or computer storage device, and may be stored on one or more general-purpose computers and executed by one or more general-purpose computers, so that a special-purpose computer configured to provide an engine can be created.
[0010] As used herein, the term “data source” refers to the source of underlying information being modeled or otherwise analyzed. Data sources may include information from or provided by databases (e.g., relational, graph-based, non-SQL, etc.), file systems, unstructured data, streams, etc. Data sources are typically positioned to model, record, or commemorate various operations or activities associated with an organization. In some cases, data sources are positioned to provide or facilitate various data-focused actions, such as efficient storage, querying, indexing, data exchange, retrieval, and updating. Generally, data sources may be positioned to provide functions related to data manipulation and data management, rather than providing a clear presentation or visualization of data.
[0011] As used herein, the term “data model” refers to one or more data structures that provide a representation of an underlying data source. In some cases, a data model may provide a view of a data source for a particular application. A data model may be considered a view or interface to an underlying data source. In some cases, a data model may map directly to a data source (e.g., a logical passthrough). Also, in some cases, a data model may be provided by a data source. In some cases, a data model may be considered an interface to a data source. A data model enables an organization to organize or present information from a data source in a way that may be more convenient, more meaningful (e.g., easier to deduce), and more secure.
[0012] As used herein, the term “data model field” refers to a named or nameable property or feature of a data model. A data model field is similar to a column in a database table, a node in a graph, or an attribute in a Java class. For example, a data model corresponding to an employee database table might have data model fields such as name, email address, phone number, employee ID, etc.
[0013] As used herein, the term “data object” refers to one or more entities or data structures that constitute a data model. In some cases, a data object may be considered part of a data model. A data object may represent an individual instance of an item or class, or a type of item.
[0014] As used herein, the term “data field” refers to a named or nameable property or attribute of a data object. In some cases, a data field may be considered analogous to a class member of an object in object-oriented programming.
[0015] As used herein, the term “panel” refers to an area within a graphical user interface (GUI) that has a predefined geometry (e.g., in x, y, z order) within the GUI. Panels may be positioned to display information to the user or to host one or more interactive controls. The geometry or style associated with a panel may be defined using configuration information, including dynamic rules. In some cases, the user may be able to perform actions on one or more panels, such as moving, showing, hiding, resizing, or sorting them.
[0016] As used herein, the term "working data model" refers to a data model that may be in the process of being developed or modeled. This term is used to distinguish a working data model from other data models, such as a data model that may include one or more recommended data fields or data objects.
[0017] As used herein, the term "working visualization" refers to a visualization that may be in the process of being developed or modeled. This term is primarily used to distinguish a visualization that is being developed or modeled from other visualizations.
[0018] As used herein, the term "configuration information" refers to information that may include rule-based policies, pattern matching, scripts (e.g., computer-readable instructions), etc., that may be provided from various sources including configuration files, databases, user input, built-in defaults, etc., or combinations thereof.
[0019] Hereinafter, embodiments of the present invention will be briefly described in order to provide a basic understanding of some aspects of the present invention. This brief description is not intended as an extensive overview. It is not intended to identify important or critical elements or to delineate or otherwise narrow the scope. Its purpose is simply to present some concepts in a simplified form as a prelude to a more detailed description presented later.
[0020] Briefly, various embodiments are directed to managing the visualization of data using one or more processors that execute one or more instructions to execute as described herein.
[0021] In one or more of the various embodiments, the data source, model panel, and display panel may be provided such that the data source can be associated with one or more data models, each containing multiple data fields.
[0022] In one or more of the various embodiments, further actions may be taken in response to the provided search expression, as described below.
[0023] In one or more of the various embodiments, one or more candidate data fields may be determined based on a search expression or one or more data models such that one or more values associated with each candidate data field can match a provided search expression. In some embodiments, one or more candidate data fields may also be displayed in a model panel.
[0024] In one or more of the various embodiments, a working data model may be generated based on one or more portions of candidate data fields, such that one or more portions of candidate data fields may be included in the working data model.
[0025] In one or more of the various embodiments, one or more visualizations may be determined based on one or more recommended models and a working data model, such that a portion of one or more visualizations may be determined based on one or more shared data fields that may be included in the working data model and one or more visualizations. In some embodiments, one or more visualizations may be listed within a display panel.
[0026] In one or more of the various embodiments, a working visualization may be generated based on the working data model and the visualizations listed in the display panel, such that one or more data fields included in the working data model can be associated with the working visualization.
[0027] In one or more of the various embodiments, in response to updating the working data model to include one or more other candidate data fields, one or more candidate data fields, one or more recommended visualizations, or working visualizations may be updated based on the updated working data model.
[0028] In one or more of the various embodiments, one or more recommended visualizations may be determined based on the association of one or more data fields in the working model with other data fields that may be included in one or more other visualizations, so that one or more recommended visualizations may be listed in the display panel. Also, in some embodiments, the updated working model may be updated to include other data fields in response to the selection of one of the recommended visualizations.
[0029] In one or more of the various embodiments, one or more characteristics associated with one or more candidate data fields may be determined such that one or more characteristics include one or more of the following: a count of the number of visualizations that reference one or more candidate data fields, data source information associated with one or more candidate data fields, or a sample of values for one or more candidate data fields. In some embodiments, one or more parts of one or more characteristics for each selected one or more candidate data fields may be displayed in the field information panel.
[0030] In one or more of the various embodiments, one or more candidate data fields may be determined from another candidate data field. In some embodiments, the working visualization may be updated to include the other candidate data fields. Also, in some embodiments, the working data model may be updated to include the other candidate data fields.
[0031] In one or more of the various embodiments, one or more popular data fields may be determined based on one or more metrics associated with the one or more popular data fields, and one or more popular data fields may be determined based on one or more data models so that one or more popular fields can be displayed in a tab panel. In some embodiments, a collection of one or more popular visualizations may be determined based on steps and one or more popular data fields so that one or more popular visualizations can be displayed in a display panel. In some embodiments, a portion of one or more popular data fields may be determined so that one or more portions of popular data fields can be selected by the user. Also, in some embodiments, a collection of one or more popular visualizations may be modified based on one or more portions of popular fields so that each popular visualization associated with one or more portions of popular data fields may be included in the collection, and each popular visualization not associated with one or more portions of popular fields may be excluded from the collection.
[0032] Exemplary operating environment Figure 1 shows the components of one embodiment of an environment in which embodiments of the present invention may be carried out. Not all components are necessarily required to carry out the present invention, and variations in the arrangement and type of components may be made without departing from the spirit or scope of the invention. As shown, the system 100 in Figure 1 includes a local area network (LAN) / wide area network (WAN)-(network) 110, a wireless network 108, client computers 102-105, a visualization server computer 116, etc.
[0033] At least one embodiment of client computers 102-105 is described in more detail below in conjunction with Figure 2. In one embodiment, at least some of client computers 102-105 may operate via one or more wired or wireless networks, such as network 108 or 110. Generally, client computers 102-105 may include virtually any computer that can communicate over the network to send and receive information and perform various online activities and offline actions, etc. In one embodiment, one or more of client computers 102-105 may operate within a business or other entity and be configured to perform various services for that business or other entity. For example, client computers 102-105 may be configured to operate as a web server, firewall, client application, media player, mobile phone, game console, desktop computer, etc. However, client computers 102-105 are not limited to these services and may be used, for example, for end-user computing in other embodiments. More or fewer client computers may be included in a system like those described herein (as shown in Figure 1), and therefore, it should be noted that embodiments are not limited by the number or type of client computers employed.
[0034] Computers that can operate as client computers 102 typically include personal computers, multiprocessor systems, microprocessor-based or programmable electronic devices, and computers connected using wired or wireless communication media such as network PCs. In some embodiments, client computers 102-105 may include substantially any portable computer capable of connecting to another computer to receive information, such as laptop computer 103, mobile computer 104, and tablet computer 105. However, portable computers are not limited in this way and may also include other portable computers such as mobile phones, display pagers, radio frequency (RF) devices, infrared (IR) devices, personal digital assistants (PDAs), handheld computers, wearable computers, and integrated devices combining one or more of the aforementioned computers. Therefore, client computers 102-105 typically range widely in terms of capabilities and functions. Furthermore, client computers 102-105 may access a variety of computing applications, including browsers, or other web-based applications.
[0035] A web-enabled client computer may include a browser application configured to send requests and receive responses over the web. The browser application may be configured to receive and display graphics, text, multimedia, etc., and can employ virtually any web-based language. In one embodiment, the browser application may use JavaScript, Hypertext Markup Language (HTML), eXtensible Markup Language (XML), JavaScript Object Notation (JSON), Cascading Style Sheets (CSS), etc., or a combination thereof, to display and send messages. In one embodiment, a user of the client computer may use the browser application to perform various activities over the network (online). However, they may use a different application to perform various online activities.
[0036] Client computers 102-105 may also include at least one other client application configured to send and receive content to and from another computer. The client application may include the ability to send and receive content, etc. The client application may further provide information that identifies itself, including type, capabilities, name, etc. In one embodiment, client computers 102-105 may uniquely identify themselves through any of a variety of mechanisms, including Internet Protocol (IP) addresses, telephone numbers, mobile identification numbers (MINs), electronic serial numbers (ESNs), client certificates, or other device identifiers. Such information may be provided in one or more network packets, etc., transmitted to other client computers, visualization server computer 116, or other computers.
[0037] Client computers 102-105 may be further configured to include client applications that enable end users to log in to end user accounts that may be managed by another computer, such as the visualization server computer 116. Such end user accounts may be configured to enable end users to manage one or more online activities, including, in a non-limited example, project management, software development, system administration, configuration management, search activities, social networking activities, browsing various websites, and communication with other users. Client computers may also be configured to enable users to view reports, interactive user interfaces, or results provided by the visualization server computer 116.
[0038] The wireless network 108 is configured to connect client computers 103-105 and their components to network 110. The wireless network 108 may include any of various wireless subnetworks that may further overlay standalone ad-hoc networks, etc., to provide infrastructure-oriented connectivity for client computers 103-105. Such subnetworks may include mesh networks, wireless LAN (WLAN) networks, cellular networks, etc. In one embodiment, the system may include two or more wireless networks.
[0039] The wireless network 108 may further include autonomous systems such as terminals, gateways, and routers connected by wireless radio links, etc. These connectors can be configured to move freely and randomly and be arbitrarily organized so that the topology of the wireless network 108 may change rapidly.
[0040] The wireless network 108 may further utilize multiple access technologies, including second-generation (2G), third-generation (3G), fourth-generation (4G), and fifth-generation (5G) wireless access for cellular systems, WLANs, and wireless router (WR) mesh. Access technologies such as 2G, 3G, 4G, 5G, and future access networks can enable wide-area coverage for mobile computers such as client computers 103-105 with varying degrees of mobility. In a non-limiting example, the wireless network 108 may enable wireless connectivity via wireless network access such as GSM® (Global System for Mobile Communication), General Purpose Packet Radio Service (GPRS), EDGE (Enhanced Data GSM Environment), Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Wideband Code Division Multiple Access (WCDMA®), High-Speed Downlink Packet Access (HSDPA), and Long Term Evolution (LTE). Essentially, the wireless network 108 may include virtually any wireless communication mechanism that allows information to travel between client computers 103-105 and other computers, networks, cloud-based networks, cloud instances, etc.
[0041] Network 110 is configured to connect network computers with other computers, including visualization server computer 116, client computer 102, and client computers 103-105, via a wireless network 108 or the like. Network 110 allows the use of any form of computer-readable medium to communicate information from one electronic device to another. In addition to direct connections via local area networks (LANs), wide area networks (WANs), Universal Serial Bus (USB) ports, Ethernet® ports, other forms of computer-readable medium, or any combination thereof, Network 110 may also include the Internet. In an interconnected set of LANs, including LANs based on different architectures and protocols, a router functions as a link between LANs, enabling them to send messages to each other. In addition, communication links within a LAN typically include twisted wire pairs or coaxial cables, but communication links between networks may use other carrier mechanisms, including analog telephone lines, fully or partially dedicated digital lines including T1, T2, T3, and T4, or wireless links including E-carriers, Integrated Services Digital Network (ISDN), Digital Subscriber Line (DSL), satellite links, or other communication links known to those skilled in the art. Furthermore, communication links may further utilize any of various digital signaling technologies, including, but not limited to, DS-0, DS-1, DS-2, DS-3, DS-4, OC-3, OC-12, OC-48, etc. Furthermore, remote computers and other related electronic devices can be remotely connected to either the LAN or WAN via modems and temporary telephone links. In one embodiment, network 110 may be configured to transmit Internet Protocol (IP) information.
[0042] In addition, communication media typically embody computer-readable instructions, data structures, program modules, or other transfer mechanisms, and include any non-temporary or temporary information distribution media. Examples include wired media such as twisted pair, coaxial cable, optical fiber, waveguide, and other wired media, and wireless media such as acoustic, RF, infrared, and other wireless media.
[0043] Furthermore, one embodiment of the visualization server computer 116 is described in more detail below in relation to Figure 3. Although Figure 1 illustrates the visualization server computer 116 etc. as a single computer, this innovation or embodiment is not limited in this way. For example, one or more functions of the visualization server computer 116 etc. may be distributed across one or more separate network computers. Furthermore, in one or more embodiments, the visualization server computer 116 may be implemented using multiple network computers. Furthermore, in one or more of the various embodiments, the visualization server computer 116 etc. may be implemented using one or more cloud instances in one or more cloud networks. Therefore, these innovations and embodiments should not be interpreted as being limited to a single environment, and other configurations and architectures are also envisioned.
[0044] Example client computer Figure 2 shows one embodiment of the client computer 200, which may include more or fewer components than those shown. The client computer 200 may represent, for example, one or more embodiments of the mobile computer or client computer shown in Figure 1.
[0045] The client computer 200 may include a processor 202 that communicates with memory 204 via a bus 228. The client computer 200 may also include a power supply 230, a network interface 232, an audio interface 256, a display 250, a keypad 252, an illuminator 254, a video interface 242, an input / output interface 238, a haptic interface 264, a global positioning system (GPS) receiver 258, an open-air gesture interface 260, a temperature interface 262, a camera 240, a projector 246, a pointing device interface 266, a processor-readable fixed storage device 234, and a processor-readable removable storage device 236. The client computer 200 may optionally communicate with a base station (not shown) or directly with another computer. In one embodiment, although not shown, a gyroscope may be used within the client computer 200 to measure or maintain the orientation of the client computer 200.
[0046] Power supply 230 may supply power to client computer 200. Power may be supplied using a rechargeable or non-rechargeable battery. Power may also be supplied by an AC adapter or by an external power source such as a powered docking cradle that supplements or charges the battery.
[0047] The network interface 232 includes circuitry for connecting client computers 200 to one or more networks and is built for use with one or more communication protocols and technologies, including, but not limited to, protocols and technologies that implement any part of the OSI model for any of the following: mobile communications (GSM), CDMA, time division multiple access (TDMA), UDP, TCP / IP, SMS, MMS, GPRS, WAP, UWB, WiMAX, SIP / RTP, GPRS, EDGE, WCDMA®, LTE, UMTS, OFDM, CDMA2000, EV-DO, HSDPA, or various other wireless communication protocols. The network interface 232 is sometimes referred to as a transceiver, transceiving device, or network interface card (NIC).
[0048] The audio interface 256 may be configured to generate and receive audio signals, such as the sound of a human voice. For example, the audio interface 256 may be coupled to a speaker and a microphone (not shown) to enable long-distance communication with another device or to generate audio confirmation of some action. The microphone within the audio interface 256 may also be used for input to or control of the client computer 200, for example, using speech recognition to detect touches based on sound.
[0049] The display 250 may be a liquid crystal display (LCD), gas plasma, electronic ink, light-emitting diode (LED), organic LED (OLED), or any other type of light-reflective or light-transmitting display that can be used with a computer. The display 250 may also include a touch interface 244 arranged to receive input from an object such as a stylus or a human finger, which may sense touches or gestures using resistive, capacitive, surface acoustic wave (SAW), infrared, radar, or other technologies.
[0050] The projector 246 may be a remote handheld projector or an integrated projector capable of projecting an image onto any other reflective surface, such as a remote wall or remote screen.
[0051] The video interface 242 may be configured to capture video images such as still photographs, video segments, and infrared video. For example, the video interface 242 may be coupled to a digital video camera, a webcam, etc. The video interface 242 may include a lens, an image sensor, and other electronic components. The image sensor may include a complementary metal-oxide-semiconductor (CMOS) integrated circuit, a charge-coupled device (CCD), or any other integrated circuit for sensing light.
[0052] The keypad 252 may include any input device positioned to receive user input. For example, the keypad 252 may include a push-button numeric dial or a keyboard. The keypad 252 may also include command buttons associated with selecting and sending images.
[0053] The illuminator 254 may provide status indications or illumination. The illuminator 254 may remain active for a specific period or in response to an event message. For example, when the illuminator 254 is active, it may backlight the buttons on the keypad 252 and remain on while the client computer is powered on. The illuminator 254 may also backlight these buttons in various patterns when certain actions are performed, such as dialing another client computer. The illuminator 254 may also cause a light source located within the transparent or translucent case of the client computer to illuminate in response to the action.
[0054] Furthermore, the client computer 200 may also include a hardware security module (HSM) 268 for providing additional tamper-proof protection for generating, storing, or using security / cryptographic information such as keys, digital certificates, passwords, passphrases, and two-factor authentication information. In some embodiments, the hardware security module may be used to support one or more standard public key infrastructures (PKIs) and may be used to generate, manage, or store key pairs, etc. In some embodiments, the HSM 268 may be a standalone computer, and in other cases, the HSM 268 may be configured as a hardware card that can be added to the client computer.
[0055] The client computer 200 may also include an input / output interface 238 for communicating with external peripheral devices or other computers such as other client computers or network computers. Peripheral devices may include audio headsets, virtual reality headsets, display screen glasses, remote speaker systems, remote speaker and microphone systems, etc. The input / output interface 238 may utilize one or more technologies such as Universal Serial Bus (USB), infrared, WiFi, WiMAX, Bluetooth®, etc.
[0056] The input / output interface 238 may also include one or more sensors for determining geolocation information (e.g., GPS), monitoring power status (e.g., voltage sensor, current sensor, frequency sensor, etc.), and monitoring weather (e.g., thermostat, barometer, anemometer, humidity detector, precipitation gauge, etc.). The sensors may be one or more hardware sensors located outside the client computer 200 that collect or measure data.
[0057] The haptic interface 264 may be configured to provide haptic feedback to the user of the client computer. For example, the haptic interface 264 may be used to vibrate the client computer 200 in a specific way when another user of the computer is calling it. The temperature interface 262 may be used to provide the user of the client computer 200 with a temperature measurement input or a temperature change output. The open-air gesture interface 260 may sense the physical gestures of the user of the client computer 200 by using, for example, a single or stereo video camera, radar, or an internal gyro sensor held or worn by the user. The camera 240 may be used to track the physical eye movements of the user of the client computer 200.
[0058] The GPS transceiver 258 can determine the physical coordinates of the client computer 200 on the Earth's surface, which typically outputs the position as latitude and longitude values. The GPS transceiver 258 can also further determine the physical location of the client computer 200 on the Earth's surface using other geopositioning mechanisms, including but not limited to triangulation, assisted GPS (AGPS), Enhanced Observed Time Difference (E-OTD), cell identifier (CI), service area identifier (SAI), Enhanced Timing Advance (ETA), base station subsystem (BSS), etc. It is understood that under different conditions, the GPS transceiver 258 can determine the physical location of the client computer 200. However, in one or more embodiments, the client computer 200 may provide other information through other components, such as a media access control (MAC) address, an IP address, etc., which can be used to determine the physical location of the client computer.
[0059] In at least one of the various embodiments, applications such as the operating system 206, visualization client 222, other client applications (apps) 224, and web browser 226 may be configured to use geolocation information to select one or more localization features, such as time zone, language, currency, and calendar format. Localization features may be used in display objects, data models, data objects, user interfaces, reports, and internal processes or databases. In at least one of the various embodiments, the geolocation information used to select localization information may be provided by GPS 258. In some embodiments, the geolocation information may also include information provided using one or more geolocation protocols over a network such as wireless network 108 or network 111.
[0060] Human interface components can be peripherals physically separated from the client computer 200, enabling remote input or output to the client computer 200. For example, as described herein, information routed through a human interface component such as a display 250 or keyboard 252 can instead be routed via a network interface 232 to an appropriate remotely located human interface component. Examples of human interface peripheral components that can be remote include, but are not limited to, audio devices, pointing devices, keypads, displays, cameras, and projectors. These peripheral components may communicate via pico networks such as Bluetooth® and Zigbee®. A non-limiting example of a client computer having such peripheral human interface components is a wearable computer, which may include a remote pico projector, along with one or more cameras, that communicate remotely with a separately located client computer to sense user gestures directed at a portion of an image projected by the pico projector onto a reflective surface such as a wall or the user's hand.
[0061] The client computer may include a web browser application 226 configured to receive and transmit web pages, web-based messages, graphics, text, multimedia, etc. The browser application on the client computer may use virtually any programming language, including Wireless Application Protocol Messages (WAP), etc. In one or more embodiments, the browser application may use Handheld Device Markup Language (HDML), Wireless Markup Language (WML), WML Script, JavaScript, Standard General Purpose Markup Language (SGML), Hypertext Markup Language (HTML), Extensible Markup Language (XML), HTML5, etc.
[0062] Memory 204 may include RAM, ROM, or other types of memory. Memory 204 is an example of a computer-readable storage medium (device) for storing information such as computer-readable instructions, data structures, program modules, or other data. Memory 204 may store the BIOS 208 for controlling the low-level operation of the client computer 200. Memory may also store the operating system 206 for controlling the operation of the client computer 200. It will be understood that this component may include a general-purpose operating system such as a version of UNIX® or Linux®, or a specialized client computer communications operating system such as Windows Phone® or Symbian®. The operating system may include or interface with a Java Virtual Machine module that enables control of hardware components or operating system operation via a Java application program.
[0063] The memory 204 may further include one or more data storages 210 which can be used by the client computer 200 to store, among other things, applications 220 or other data. For example, the data storage 210 may also be used to store information describing various capabilities of the client computer 200. This information can then be provided to another device or computer based on any of the following methods, including being transmitted as part of a header during communication, being transmitted on request, etc. The data storage 210 may also be used to store social networking information, including address books, buddy lists, aliases, user profile information, etc. The data storage 210 may further include program code, data, algorithms, etc., for use by a processor such as the processor 202 to perform and implement actions. In one embodiment, at least a portion of the data storage 210 may also be stored in another component of the client computer 200, including a non-temporary processor-readable removable storage device 236, a processor-readable fixed storage device 234, or an external one to the client computer.
[0064] Application 220, when executed by the client computer 200, may include computer-executable instructions that transmit, receive, or otherwise process commands and data. Application 220 may include, for example, a visualization client 222, other client applications 224, a web browser 226, etc. The client computer may be configured to exchange communications with one or more servers.
[0065] Other examples of application programs include calendars, search programs, email client applications, instant messaging (IM) applications, SMS applications, Voice over Internet Protocol (VOIP) applications, contact managers, task managers, transcoders, database programs, word processing programs, security applications, spreadsheet programs, games, search programs, visualization applications, and more.
[0066] In addition, in one or more embodiments (not shown), the client computer 200 may include, instead of a CPU, an embedded logic hardware device such as an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a programmable array logic (PAL), or a combination thereof. The embedded logic hardware device may directly execute its embedded logic to perform actions. Also, in one or more embodiments (not shown), the client computer 200 may include, instead of a CPU, one or more hardware microcontrollers. In one or more embodiments, one or more microcontrollers may directly execute their own embedded logic to perform actions, such as a system-on-a-chip (SOC), and may access their own internal memory and their own external input / output interfaces (e.g., hardware pins or wireless transceivers) to perform actions.
[0067] Exemplary network computer Figure 3 shows one embodiment of a network computer 300 that may be included in a system implementing one or more of the various embodiments. The network computer 300 may include more or fewer components than those shown in Figure 3. However, the components shown are sufficient to disclose exemplary embodiments for implementing these innovations. The network computer 300 may represent at least one embodiment, such as the visualization server computer 116 in Figure 1.
[0068] A network computer, such as network computer 300, may include a processor 302 capable of communicating with memory 304 via bus 328. In some embodiments, the processor 302 may consist of one or more hardware processors or one or more processor cores. In some cases, one or more of the one or more processors may be special processors designed to perform one or more special actions, such as the actions described herein. Network computer 300 also includes a power supply 330, a network interface 332, an audio interface 356, a display 350, a keyboard 352, an input / output interface 338, a processor-readable fixed storage device 334, and a processor-readable removable storage device 336. The power supply 330 provides power to network computer 300.
[0069] The network interface 332 includes circuitry for connecting network computers 300 to one or more networks and is constructed for use with one or more communication protocols and technologies, including but not limited to protocols and technologies that implement the Open Systems Interconnection (OSI) model, GSM (Global System for Mobile Communication), Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), User Datagram Protocol (UDP), Transmission Control Protocol / Internet Protocol (TCP / IP), Short Message Service (SMS), Multimedia Messaging Service (MMS), General Purpose Packet Radio Service (GPRS), WAP, Ultra Wideband (UWB), IEEE 802.16 WiMax (Worldwide Interoperability for Microwave Access), Session Initiation Protocol / Real-Time Transmission Protocol (SIP / RTP), or various other wired and wireless communication protocols. The network interface 332 is also known as a transceiver, transceiver device, or network interface card (NIC). The network computer 300 may optionally communicate with a base station (not shown) or communicate directly with another computer.
[0070] The audio interface 356 may be configured to generate and receive audio signals, such as the sound of a human voice. For example, the audio interface 256 may be coupled to a speaker and a microphone (not shown) to enable long-distance communication with another device or to generate audio confirmation of some action. The microphone in the audio interface 356 may also be used, for example, with speech recognition to input to or control a network computer 300.
[0071] The display 350 may be a liquid crystal display (LCD), gas plasma, electronic ink, light-emitting diode (LED), organic LED (OLED), or any other type of light-reflective or light-transmitting display that can be used with a computer. The display 350 may also be a handheld projector or pico projector capable of projecting an image onto a wall or other object.
[0072] The network computer 300 may also include an input / output interface 338 for communicating with external devices or computers not shown in Figure 3. The input / output interface 338 can utilize one or more wired or wireless communication technologies, such as USB®, Firewire®, WiFi, WiMAX, Thunderbolt®, Infrared, Bluetooth®, Zigbee®, serial port, parallel port, etc.
[0073] The input / output interface 338 may also include one or more sensors for determining geolocation information (e.g., GPS), monitoring power status (e.g., voltage sensor, current sensor, frequency sensor, etc.), and monitoring weather (e.g., thermostat, barometer, anemometer, humidity detector, precipitation gauge, etc.). The sensors may be one or more hardware sensors that collect or measure data located outside the network computer 300. Human interface components can be physically separated from the network computer 300 and enable remote input or output to the network computer 300. For example, as described herein, information routed through human interface components such as the display 350 or keyboard 352 can instead be routed through the network interface 332 to an appropriate human interface component located elsewhere on the network. Human interface components include any components that enable the computer to receive input from or transmit output to a human user of the computer. Thus, pointing devices such as a mouse, stylus, or trackball can communicate via the pointing device interface 358 and receive user input.
[0074] The GPS transceiver 340 can determine the physical coordinates of the network computer 300 on the Earth's surface, typically outputting the position as latitude and longitude values. The GPS transceiver 340 can also further determine the physical location of the network computer 300 on the Earth's surface using other geopositioning mechanisms, including, but not limited to, triangulation, assisted GPS (AGPS), extended observation time difference (E-OTD), cell identifiers (CI), service area identifiers (SAI), extended timing advance (ETA), base station subsystems (BSS), etc. It is understood that under different conditions, the GPS transceiver 340 can determine the physical location of the network computer 300. However, in one or more embodiments, the network computer 300 may provide other information through other components, such as media access control (MAC) addresses, IP addresses, etc., which can be used to determine the physical location of client computers.
[0075] In at least one of the various embodiments, applications such as the operating system 306, modeling engine 322, visualization engine 324, and other applications 329 may be configured to use geolocation information to select one or more localization features, such as time zone, language, currency, currency format, and calendar format. Localization features may also be used in user interfaces, dashboards, visualizations, reports, and internal processes or databases. In at least one of the various embodiments, the geolocation information used to select localization information may be provided by GPS 340. In some embodiments, the geolocation information may also include information provided using one or more geolocation protocols over a network such as wireless network 108 or network 111.
[0076] Memory 304 may include random access memory (RAM), read-only memory (ROM), or other types of memory. Memory 304 provides an example of a computer-readable storage medium (device) for storing information such as computer-readable instructions, data structures, program modules, or other data. Memory 304 stores a basic input / output system (BIOS) 308 for controlling the low-level operation of the network computer 300. Memory also stores an operating system 306 for controlling the operation of the network computer 300. It will be understood that this component may include a general-purpose operating system such as a version of UNIX® or Linux®, or a specialized operating system such as Microsoft's Windows® operating system or Apple's macOS® operating system. The operating system may include or interface with one or more virtual machine modules, such as a Java Virtual Machine module that enables control of hardware components or operating system operation via a Java application program. Similarly, other runtime environments may be included.
[0077] The memory 304 may further include one or more data storages 310, which the network computer 300 may use to store, among other things, applications 320 or other data. For example, the data storage 310 may also be used to store information describing various capabilities of the network computer 300. This information can then be provided to another device or computer based on any of a variety of methods, including being transmitted as part of a header during communication, being transmitted on request, etc. The data storage 310 may also be used to store social networking information, including address books, buddy lists, aliases, user profile information, etc. The data storage 310 may further include program code, data, algorithms, etc., for use by a processor such as the processor 302 to perform and carry out actions such as those described below. In one embodiment, at least a portion of the data storage 310 may also be stored in other components of the network computer 300, including, but not limited to, a processor-readable removable storage device 336 inside a non-temporary medium, a processor-readable fixed storage device 334, or any other computer-readable storage device within the network computer 300 or an external one to the network computer 300. The data storage 310 may include, for example, a data source 314, a data model 316, a visualization 318, etc.
[0078] Application 320, when executed by the network computer 300, may include computer executable instructions that enable long-distance communication with another user on another mobile computer by sending, receiving, or otherwise processing messages (e.g., SMS, Multimedia Messaging Service (MMS), Instant Message (IM), Email, or other messages), audio, and video. Other examples of application programs include calendars, search programs, email client applications, IM applications, SMS applications, Voice over Internet Protocol (VOIP) applications, contact managers, task managers, transcoders, database programs, word processing programs, security applications, spreadsheet programs, games, search programs, etc. Application 320 may be configured to perform actions for embodiments described below. It may also include a modeling engine 322, a visualization engine 324, other applications 329, etc. In one or more of the various embodiments, one or more applications may be implemented as modules or components of other applications. Furthermore, in one or more of the various embodiments, applications may be implemented as extensions, modules, plug-ins, etc., of an operating system.
[0079] Furthermore, in one or more of the various embodiments, the modeling engine 322, the visualization engine 324, other applications 329, etc., may operate in a cloud-based computing environment. In one or more of the various embodiments, these applications and others, including the management platform, may run within a virtual machine or virtual server that can be managed in a cloud-based computing environment. In one or more of the various embodiments, in this context, the applications may flow from one physical network computer to another in the cloud-based environment, depending on performance and scaling considerations that are automatically managed by the cloud computing environment. Similarly, in one or more of the various embodiments, virtual machines or virtual servers dedicated to the modeling engine 322, the visualization engine 324, other applications 329, etc., may be automatically provisioned and decommissioned.
[0080] Furthermore, in one or more of the various embodiments, the modeling engine 322, the visualization engine 324, other applications 329, etc., may be located on virtual servers running in a cloud-based computing environment, rather than being tied to one or more specific physical network computers.
[0081] Furthermore, the network computer 300 may also include a hardware security module (HSM) 360 for providing additional tamper-proof protection for generating, storing, or using security / cryptographic information such as keys, digital certificates, passwords, passphrases, and two-factor authentication information. In some embodiments, the hardware security module may be used to support one or more standard public key infrastructures (PKIs) and may be used to generate, manage, or store key pairs, etc. In some embodiments, the HSM 360 may be a standalone network computer, and in other cases, the HSM 360 may be configured as a hardware card installed in the network computer.
[0082] In addition, in one or more embodiments (not shown), the network computer 300 may include, instead of a CPU, an embedded logic hardware device such as an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a programmable array logic (PAL), or a combination thereof. The embedded logic hardware device may directly execute its embedded logic to perform actions. Also, in one or more embodiments (not shown), the network computer 300 may include one or more hardware microcontrollers instead of a CPU. In one or more embodiments, one or more microcontrollers may directly execute their own embedded logic to perform actions, such as a system-on-a-chip (SOC), and may access their own internal memory and their own external input / output interfaces (e.g., hardware pins or wireless transceivers) to perform actions.
[0083] Exemplary Logical System Architecture Figure 4 shows the logical architecture of system 400 for automated data model generation according to one or more of the various embodiments. In one or more of the various embodiments, system 400 may be a data modeling platform configured to include various components, including a modeling engine 402, a visualization engine 404, a visualization 406, a visualization model 408, a data model 410, a data source 412, and so on.
[0084] In one or more of the various embodiments, the data source 412 represents a source such as raw data, records, or data items that can be used by the modeling engine 402 to enable a user to generate or modify a data model such as the data model 410.
[0085] In one or more of the various embodiments, a data model such as data model 410 may be a data structure or the like that provides one or more logical representations of information stored in one or more data sources such as data source 412. In some embodiments, the data model may include data objects that correspond to one or more parts of tables, views, or files in the data source. For example, in some embodiments, if the data source 412 is a CSV file or a database, the data model such as data model 410 may consist of one or more data objects that can correspond to record fields in the data source 412.
[0086] In one or more of the various embodiments, the data model may be configured to provide a logical representation of a data source that may differ from the underlying data source. In some embodiments, this may involve excluding one or more fields of the data source from the data model.
[0087] In some embodiments, a modeling engine, such as modeling engine 402, may be used to convert some or all of the data source 412 into a data model 410. In some embodiments, the modeling engine may be configured to employ or execute computer-readable instructions provided by configuration information to determine some or all of the steps for converting values in the data source into a data model.
[0088] In one or more of the various embodiments, the modeling engine may be configured to assist a user in creating one or more data models that can be obtained based on underlying data in a data source.
[0089] Therefore, in some embodiments, the modeling engine may be configured to recommend one or more visualizations (or visualization models) based on the working data model or one or more candidate data fields.
[0090] In one or more of the various embodiments, a visualization engine, such as visualization engine 404, may be configured to determine the layout, style, interactivity, etc., of a visualization, such as visualization model 408, which may be displayed to the user, such as visualization 406. In some embodiments, the visualization engine may also be configured to use data item values provided through a data source to populate the visualization based on a data model.
[0091] In one or more of the various embodiments, the modeling engine may be configured to receive one or more search expressions that can be used to generate an automated data model. In some embodiments, the user may be provided with a user interface for providing a search expression that may contain one or more keywords or one or more expressions. In response to the provided search expression, the modeling engine may be configured to search an existing data model or data source to identify one or more data fields that may match the provided search expression. In some embodiments, the modeling engine may be configured to determine matching data fields using various criteria. For example, in some embodiments, the modeling engine may be configured to compare the search expression with values in different data fields in multiple data models to determine one or more data fields that may contain values that match the search expression. Other search or matching strategies may also be applied, such as matching data field names or labels, matching data object names or labels in other data models, etc.
[0092] In one or more of the various embodiments, the modeling engine may be configured to determine one or more metrics associated with data fields that match the search expression. In some embodiments, contextual information associated with each match may be provided. In some embodiments, one or more of these metrics may be used to sort, rank, or filter one or more data fields before displaying the search results to the user.
[0093] In one or more of the various embodiments, the modeling engine may be configured to support search expressions that may use a variety of different query styles or query languages, such as regular expressions, string matching, SQL-like expressions, and logical operators (e.g., AND, OR, etc.). In some embodiments, the modeling engine may be configured to interpret search expressions using grammars, parsers, rules, etc., provided via configuration information, taking into account local circumstances or local requirements.
[0094] In one or more of the various embodiments, the modeling engine may be configured to allow a user to select one or more candidate data fields and automatically generate a data model. In some embodiments, given data fields, the modeling engine may be configured to determine, based on one or more selected candidate data fields or working data models, one or more recommended visualizations, one or more other recommended data fields, one or more queries or questions asked regarding data models that share one or more candidate data fields, etc. This information may be provided to assist the user in deciding whether to include the candidate data fields in the working data model.
[0095] In one or more of the various embodiments, the modeling engine may be configured to determine one or more visualization types that may be suitable for analyzing a provided data field. In some embodiments, a particular visualization may be determined based on how the provided data field or a similar data field may be used by other users. In one or more of the various embodiments, the modeling engine may be configured to determine some or all of the recommended visualizations based on the data type associated with the data field. For example, if the data field is used to store date information, the modeling engine may be configured to recommend a calendar-style visualization. Similarly, if the data field is used to store geographical values such as an address, GPS coordinates, or state name, the modeling engine may be configured to recommend a visualization that includes a map or map-like features.
[0096] In one or more of the various embodiments, the modeling engine may be configured to evaluate the user's working data model or selected data fields to determine one or more other data fields that were used in conjunction with the selected data fields in other visualizations. Thus, in one or more of the various embodiments, the modeling engine may provide one or more recommendations for selecting additional data fields to include in the working data model, based on the use of those data fields in other visualizations or data models. For example, if the data field State is selected, other data fields such as Profit, Population, Sell Counts, etc., may be recommended by the modeling engine if it determines that other visualizations use these fields in combination with the State data field.
[0097] In one or more of the various embodiments, the user may initially be provided with an "empty" working data model. Alternatively, in some embodiments, the user may be provided with a working data model that includes one or more data objects or data fields, which may be because some data objects or data fields have already been added to the working data model. Alternatively, in one or more of the various embodiments, the modeling engine may be configured to allow the user to start with a working data model based on a data model that already contains data objects.
[0098] Therefore, in one or more of the various embodiments, once data fields and visualizations are selected, data fields that may be included in the visualization may be automatically added to the working data model. Thus, in some embodiments, the user can examine various items such as recommended visualizations and recommended fields to determine candidate data fields that may be added to the working data model.
[0099] In one or more of the various embodiments, data fields may be part of a data object. Therefore, in some embodiments, the modeling engine may be configured to add a data object containing selected data fields to the user's working data model.
[0100] In one or more of the various embodiments, the modeling engine may be configured to recommend visualizations or data fields based on combinations of data objects or data fields included in the user's working data model. In one or more of the various embodiments, when data fields or data objects are added to the working data model, the modeling engine may be configured to dynamically adapt its recommendations based on some or all of the data objects or data fields that were included in the working data model.
[0101] In one or more of the various embodiments, the modeling engine may be configured to determine one or more data fields to recommend using various evaluators or recommendation models. In some embodiments, the evaluator or recommendation model may be a data structure that collects or includes one or more instructions, rules, conditions, machine learning classifiers, etc., that the modeling engine can execute to evaluate data fields or data objects and determine whether they should be recommended to the user. In one or more of the various embodiments, a particular evaluator or recommendation model, and one or more of their actions, may be determined from configuration information taking into account local requirements or the local environment.
[0102] Furthermore, in one or more of the various embodiments, the modeling engine may be configured to determine popular data fields and a collection of associated visualizations that may be displayed to the user. In some embodiments, popular data fields may be displayed in a tab panel of the user interface, and thumbnails of associated visualizations may be displayed in a display panel. Thus, rather than providing a free-form search expression, the user may be able to select one or more popular data fields directly from a tab panel in the user interface. In some embodiments, popular data fields may be displayed without a data model or other context. In some embodiments, this may allow the user to focus on the popular data fields without being distracted by the structure or design of the data model that contains the popular data fields.
[0103] Therefore, in one or more of the various embodiments, when a user selects a popular data field from a tab panel, the modeling engine may be configured to automatically generate a search expression that can be used to identify one or more visualizations for recommendation using the selected data field. Also, in some embodiments, the modeling engine may be configured to allow the selection of multiple popular data fields in the tab panel. Therefore, in some embodiments, a combination of collections of popular data fields may be used to determine one or more recommended visualizations.
[0104] Figure 5A illustrates a partial logical representation of a user interface 500 for automatic data model generation according to one or more of various embodiments. In some embodiments, the user interface 500 may be configured to include one or more panels, such as a model panel 502 and a display panel 504.
[0105] In one or more of the various embodiments, the user interface 500 may be displayed on one or more hardware displays, such as client computer displays, mobile device displays, etc. In some embodiments, the user interface 500 may be provided via a native application or as a web application hosted in a web browser or other similar application. Those skilled in the art will understand that, at least for clarity or brevity, many details common to commercial / production user interfaces have been omitted from the user interface 500. Similarly, in some embodiments, the user interface may be configured differently from that shown depending on the local environment or local requirements, such as display type, display resolution, user preferences, etc. However, those skilled in the art will understand that the disclosure / description of the user interface 500 is sufficient to disclose at least the innovations included herein.
[0106] In some embodiments, a model panel, such as model panel 502, may be used to display information associated with recommended data fields, search expressions, etc. Also in some embodiments, model panel 502 may be configured to display a working data model. In this example, model panel 502 is empty, except for user interface controls such as search control 506, which allows the user to provide a search expression. In this example, model panel 502 is shown as empty to indicate that the user has started a data modeling session but has not entered any search expressions.
[0107] In one or more of the various embodiments, the display panel 504 may be configured to display a visualization or a recommended visualization. Thus, in some embodiments, when a user evaluates different data fields, thumbnails associated with the recommended visualization, the recommended data fields, etc., may be displayed on the display panel 504. Similarly, in some embodiments, when a user selects a visualization from the available recommended visualizations, that visualization may be used as the basis for a working visualization that can be displayed on the display panel 504.
[0108] In one or more of the various embodiments, additional panels may be included in the user interface 500, including panels for modifying marks used to represent values in the visualization. For example, in some embodiments, if the user is designing a data model that generates a visualization showing locations (points) on a map, additional fields such as size, revenue, and profit may be added as color or size values that can be applied to the points on the map. For example, marks on the map locations associated with more profit may be displayed using marks that are proportionally larger than those associated with less profit.
[0109] Figure 5B illustrates a partial logical representation of the user interface 500 for automated data model generation in one or more of its various embodiments. For brevity and clarity, the elements or behaviors of the user interface 500 described in Figure 5A are not repeated here.
[0110] In this example, the search control 506 contains the search expression that generated the result 512. Therefore, in some embodiments, the fields shown in the result 512 represent data fields from various data models that have values matching the search expression "Washington". As shown in this example, there are four fields, each containing a value that matches the search expression.
[0111] In one or more of the various embodiments, the user may be able to immediately see candidate data fields that may be associated with the search expression. In some cases, one or more candidate data fields may be unknown to the user. Similarly, one or more candidate data fields may be considered irrelevant by the user.
[0112] In some embodiments, the modeling engine may be configured to generate or display field panels, such as field panel 508, in response to user interaction with candidate data fields in result 512. In this example, the position of pointer 510 represents user "hovering" over the candidate data field label. Thus, in some embodiments, the modeling engine may be configured to generate field panels, such as field panel 508, and populate them with information about the selected candidate data field. In this example, the selected candidate data field is "Product Name," and the information displayed in field panel 508 shows information about that field, such as data type (String), data source information (column, table, database), and other values held by the selected data field. In some embodiments, field panel 508 may also include metrics or usage data associated with the selected candidate data field, such as a count of the number of visualizations containing the data field in the data model, or thumbnails of visualizations that use the data field.
[0113] In this example, field information 514 includes information such as data type and data source information. Also in this example, domain information 516 indicates other values for the data field. In some embodiments, the modeling engine may be configured to allow the user to browse the domain information to view one or more values in order to help determine whether this data field represents a type of object that the user might want to include in the working data model.
[0114] Figure 5C illustrates a partial logical representation of the user interface 500 for automated data model generation in one or more of its various embodiments. For brevity and clarity, elements or behaviors of the user interface 500 described above in Figure 5A or Figure 5B are not repeated here.
[0115] As described above, in some embodiments, the modeling engine may be configured to allow the user to select a candidate data field from the result 512 using a pointer 510. In this example, the pointer 510 may be considered to be hovering over the State data field in the result 512. Thus, in some embodiments, the modeling engine may be configured to display a field panel 508 and populate it with a value based on the State data field. Thus, in this example, the field information 520 may indicate that the State data field contains a String value representing a geographical state from a table named "Location" in a database named "Customers". Also in this example, the domain information 522 indicates that the value associated with the State data field contains the name of a state in the United States. Also in this example, the usage information 524 may include information such as the number of visualizations that use the data model containing the State data field, as well as thumbnails of the visualizations that use the State data field.
[0116] Therefore, in one or more of the various embodiments, the modeling engine enables the user to quickly evaluate whether one or more candidate data fields that match the search expression may be suitable for inclusion in those data models.
[0117] Figure 5D illustrates a partial logical representation of the user interface 500 for automated data model generation in one or more of its various embodiments. For reasons of brevity and clarity, the elements or behaviors of the user interface 500 described above in Figures 5A, 5B, or 5C are not repeated here.
[0118] In one or more of the various embodiments, the modeling engine may be configured to allow the user to select a data field from a variety of collections of fields, such as result 512, popular field 532, or data model 530.
[0119] In some embodiments, the modeling engine may be configured to automatically add fields to the working data model from results 512, popular fields 532, etc. In this example, the working data model 530 may be displayed in the model panel 502. In some embodiments, the modeling engine may be configured to add candidate data fields to the working data model when candidate data fields are selected by the user. Also, in one or more of the various embodiments, the modeling engine may be configured to remove data fields from the working data model when the user deselects or otherwise deletes a data field.
[0120] For example, in this example, the user has selected a State data field, as represented by pointer 510. In one or more of the various embodiments, if the user has selected a State data field from result 512 (see Figure 5C), the modeling engine may be configured to remove the State data field from result 512 and add it to the working data model 530, as shown herein. In some embodiments, if the user has released or otherwise deselected a State data field, the modeling engine may be configured to remove it from the working data model 530 and return it to result 512. In some embodiments, if the State data field is associated with another field (not shown) or visualization, the modeling engine may be configured to leave the State data field in the data model 530 rather than return it to result 512.
[0121] In one or more of the various embodiments, the modeling engine may be configured to determine and recommend to the user one or more visualizations, visualization types, other data fields, etc. In some embodiments, the recommendation may be based on one or more characteristics such as the selected data field, working data model, other data model, other visualizations, or usage metrics / history associated with the data field.
[0122] In one or more of the various embodiments, the modeling engine may be configured to use a recommendation model to determine which visualizations, visualization types, other data fields, etc., should be recommended to the user. In one or more of the various embodiments, the recommendation model may represent data structures, rules, instructions, etc., that the modeling engine can use to determine which visualizations, visualization types, other data fields, etc., to recommend to the user.
[0123] In one or more of the various embodiments, different categories of recommendations may be associated with different recommendation models. Therefore, in some embodiments, recommendation models may be tailored based on the categories of recommendations they may be directed to. Also, in some embodiments, recommendation models may be tailored or otherwise adapted to meet the local requirements of an organization. For example, in some embodiments, an organization may intentionally exclude one or more visualizations, visualization types, other data fields, etc., from recommendations for one or more users. For example, in some embodiments, one or more visualizations or data models may contain or represent sensitive or restricted information that can only be accessed by specified users. Therefore, in some embodiments, recommendation models may be configured to include or exclude recommendations for various reasons. Also, in some embodiments, new or additional recommendation models may be provided when different or new visualizations, data models, data sources, etc., are introduced. Therefore, in one or more of the various embodiments, the modeling engine may be configured to use recommendation models, recommendation rules, etc., which may be provided via configuration information taking local requirements or local environments into consideration.
[0124] In this example, the modeling engine may be configured to determine the visualization type 526 and the recommended field 528 based on one or more recommended models that evaluate one or more characteristics of the selected data field (e.g., State), the working data model, the working visualization, other data models, other visualizations, etc.
[0125] In this example, visualization type 526 may include thumbnail views of different visualization types that may be recommended for visualizing the State data field. For example, in one or more of the various embodiments, visualization type 526 may include thumbnail views of various visualizations such as a map filled with (color), other maps, lists / tables, etc.
[0126] Similarly, in this example, the recommended field 528 may include a thumbnail view of a visualization that is associated with a data model or a data field that may be recommended to be included in the visualization, which includes a State data field. For example, in one or more of the various embodiments, the recommended field 528 may include one or more thumbnail views of various visualizations that include corresponding recommended data fields such as Profit, Profit Ratio, Order Count, Items Sold, etc. In one or more of the various embodiments, one or more of the recommended data fields may be from different data models or different data sources.
[0127] In some embodiments, the recommendations may include text-based descriptions or annotations that support the recommendations. In some embodiments, the recommendation model may be configured to provide recommendation information that may include text, images, metrics, etc. Thus, the modeling engine may be configured to display some or all of the recommendation information on the display panel. Furthermore, in some embodiments, the modeling engine may be configured to use user interface layouts, styling, user interface behaviors, etc., provided via configuration information, in order to enable the display appearance to be adapted to the local environment or local requirements. For example, visualization type 526 or recommended field 528, etc., may be displayed using interactive controls (e.g., scroll bars), fonts, colors, etc., determined based on the configuration information.
[0128] Figure 5E illustrates a partial logical representation of the user interface 500 for automated data model generation in one or more of its various embodiments. For reasons of brevity and clarity, the elements or behaviors of the user interface 500 described above in Figures 5A, 5B, 5C, or 5D are not repeated here.
[0129] In this example, continuing from Figure 5D, the State data field is “dropped” into one of the recommended visualization types. Thus, in one or more of the various embodiments, the State data field is added to the working data model 530, and the working visualization 534 is generated using the map visualization type (representing the selected visualization type). In this example, the first instance of the working visualization 534 displays a map of the United States showing its states. Here, in this example, the modeling engine may be configured to display a map of geographical areas (e.g., states, regions, counties, countries, etc.) as a default response to being initialized with a data field representing a geographical area. In some embodiments, the default or initial appearance of the visualization may depend on the data model or working data model. Thus, in one or more of the various embodiments, specific default rules or assumptions used to initialize the visualization may be determined via rules, instructions, etc., provided through configuration information.
[0130] In one or more of the various embodiments, the modeling engine may be configured to allow the user to add more data fields to their working data model. In some embodiments, the modeling engine may be configured to continuously update the working data model as the user adds or removes data fields. Furthermore, in some embodiments, the user may also be able to continuously change the visualization type, etc. Thus, in some embodiments, the modeling engine may be configured to update the working data model, working visualizations, recommendation information, etc., based on user interaction or user input.
[0131] In this example, the Profit data field is selected from the Popular field 532 and added to the working data model 530. Therefore, in one or more of the various embodiments, the modeling engine may be configured to automatically update the working visualization 534, recommendations, etc., based on the characteristics of the added field or the modified working data model. In this example, in several embodiments, adding the Profit data field to the working data model 530 triggers the modeling engine to update the working visualization 534 to show the amount of profit that can be associated with each US state. Note that this default behavior is possible because a relationship exists between Profit and States that the modeling engine can identify from the available data model or data source.
[0132] In one or more of the various embodiments, if data fields can be added to the working data model, the data object containing them can be added to the working data model, not just the individual data fields. In some embodiments, some or all of the additional data fields in the data object added to the working data model may be displayed in the model panel. In some embodiments, one or more user interface controls (not shown) may be provided so that the user can show or hide some or all of the data fields in the data object displayed in the model panel. In this example, the modeling engine may be configured to hide data fields that are not explicitly displayed in the working visualization.
[0133] Figure 6 illustrates a partial logical representation of the user interface 600 for automatic data model generation in one or more of its various embodiments. For the sake of brevity and clarity, the elements or behaviors of the user interface 500 described above in Figure 5A, etc., are not repeated here.
[0134] In some embodiments, a user interface such as user interface 600 may be configured to include tab panels such as tab panel 602, display panel 604, etc.
[0135] In one or more of the various embodiments, the modeling engine may be configured to provide a tab panel, such as tab panel 602, which may include interactive labels or buttons representing one or more popular or recommended data fields.
[0136] In one or more of the various embodiments, the modeling engine may be configured to use one or more recommended models to select data fields that may be represented in a tab panel. As described above, the recommended models (not shown) represent data structures, codes, instructions, classifiers, evaluators, etc., that the modeling engine may use to determine one or more data fields (popular data fields) that should be included in a tab panel such as tab panel 602.
[0137] Furthermore, in one or more of the various embodiments, the modeling engine may be configured to determine one or more visualizations, such as visualization 606, which may be associated with popular data fields included in the tab panel. In some embodiments, the determined visualizations may be displayed using a thumbnail representation of the recommended visualization or visualization type.
[0138] In some embodiments, the user may be allowed to interactively select popular data fields from a tab panel or select visualizations from a display panel. In some embodiments, once a data field is selected, the modeling engine may be configured to use the selected data field as a filter to include or exclude visualizations from visualization 606. For example, if the user first selects a State data field in tab panel 602, the modeling engine may be configured to exclude visualizations not associated with the State data field from visualization 606. Similarly, in this example, if the user selects additional fields, the modeling engine may be configured to use the entire collection of selected data fields as a filter to exclude or include visualizations shown in visualization 606. Note that, although not shown here, tab panels such as tab panel 602 may include additional / alternative user interface controls (e.g., toggle buttons) that allow the filter effect to be reversed. Also, in some embodiments, additional filter information may be provided as a search expression via search control 608, etc.
[0139] Furthermore, in one or more of the various embodiments, the modeling engine may be configured to allow the user to select one or more visualizations from visualization 606. Thus, in some embodiments, the selected visualizations may be used as filters applied to the data fields displayed in the tab panel. For example, if the user selects a visualization from visualization 606, the modeling engine may be configured to remove the data fields from the tab panel unless the data fields are included in the data model associated with the selected visualization. In some embodiments, when additional visualizations are selected, the data fields associated with those selected visualizations may be added to the tab panel.
[0140] Therefore, in some embodiments, users may be able to quickly and intuitively explore data models, data fields, visualizations, etc., without having deep knowledge or understanding of the underlying data sources, data models, etc.
[0141] In some embodiments, the modeling engine may be configured to select or activate a visualization selected from the visualizations 606 for automatic data model generation, as described in Figures 5A to 5E, etc.
[0142] Generalized behavior Figures 7 to 10 illustrate generalized operations for automated data model generation according to one or more of the various embodiments. In one or more of the various embodiments, processes 700, 800, 900, and 1000 described in conjunction with Figures 7 to 10 may be implemented or executed by one or more processors on a single network computer, such as the network computer 300 in Figure 3. In other embodiments, these processes or parts thereof may be implemented or executed by multiple network computers, such as the network computer 300 in Figure 3. In yet another embodiment, these processes or parts thereof may be implemented or executed by one or more virtualized computers, such as a cloud-based environment. However, the embodiments are not limited in this way, and various combinations of network computers, client computers, etc., may be used. Furthermore, in one or more of the various embodiments, the processes described in conjunction with Figures 7 to 10 may be used for automated data model generation according to at least one of the various embodiments or architectures described in conjunction with Figures 4 to 6. Furthermore, in one or more of the various embodiments, some or all of the actions performed by processes 700, 800, 900, and 1000 may be partially performed by a modeling engine 322, a visualization engine 324, etc., running on one or more processors of one or more network computers.
[0143] Figure 7 shows an overview flowchart of process 700 for automated data model generation according to one or more of the various embodiments. Following the start block, in start block 702, in one or more of the various embodiments, a data source or one or more data models may be provided to the modeling engine. In one or more of the various embodiments, the organization may have many data models based on various data sources used for visualization. In one or more of the various embodiments, these data models or data sources may be provided by different departments or creators. In some cases, some or many of these data models may be unknown to other users. Therefore, in some embodiments, providing the organization with access to other data models may enable the modeling engine to generate recommendations regarding data fields or data objects that should be included in those data models.
[0144] In one or more of its various embodiments, the modeling engine may be configured to restrict access to one or more data sources or data models to specific users or user groups. For example, some data models or data sources may be restricted to employees belonging to a particular department or role. Thus, in some embodiments, the modeling engine may be configured to determine which users may be permitted to access a given data model or data source using rules, instructions, access lists, etc., provided through configuration information.
[0145] In block 704, in one or more of the various embodiments, the modeling engine may be configured to generate a user interface which may include one or more model panels, one or more display panels, and so on.
[0146] In one or more of the various embodiments, the user interface may include various different panels, including a model panel for displaying information such as candidate data fields, search results, and working data models.
[0147] In one or more of the various embodiments, the display panel may be used to display thumbnails associated with a recommended visualization or visualization type, additional fields, etc. Also, in some embodiments, the modeling engine may be configured to use the display panel to display a working visualization while the working visualization or working data model is being designed.
[0148] In one or more of the various embodiments, the specific layout of the user interface or panels within the user interface may differ according to local preferences. Therefore, in some embodiments, the modeling engine may be configured to determine the layout, appearance, or styling of the user interface using templates, rules, layout information, styling, etc., provided via configuration information.
[0149] In block 706, in one or more of the various embodiments, the modeling engine may be configured to determine one or more data fields based on one or more search expressions that may be displayed in the model panel of the user interface. As described above, the modeling engine may be configured to determine one or more candidate data fields based on the search expression using various evaluators or recommendation models.
[0150] In block 708, in one or more of the various embodiments, the modeling engine may be configured to generate a working data model that includes one or more data fields provided by the model panel. If candidate data fields can be selected, the modeling engine may add the selected candidate data fields and their associated data objects to the working data model. In this context, the working data model is the data model that the user is actively modeling.
[0151] In block 710, in one or more of the various embodiments, the modeling engine may be configured to determine one or more recommended visualizations, visualization types, other data fields, etc., based on the working data model. Once the working data model is developed, the modeling engine may be configured to automatically evaluate other data models, other visualizations, other queries, etc., and provide one or more recommendations for inclusion in the working data model. In one or more of the various embodiments, the modeling engine may recommend one or more visualization types, visualizations, additional fields to include, additional queries, etc., based on the working data model and previously created visualizations or data models.
[0152] In block 712, in one or more of the various embodiments, the modeling engine may be configured to generate working visualizations based on a working data model. In one or more of the various embodiments, the user may select or activate one or more working visualizations when interacting with the working data model. In some embodiments, the user may select working visualizations from or based on one or more visualizations or visualization types recommended by the modeling engine. Alternatively, in some embodiments, the user may select working visualizations or visualization types via a separate search tool or search catalog.
[0153] Next, in one or more of the various embodiments, control can be returned to the calling process.
[0154] Figure 8 shows a flowchart of process 800 for automated data model generation according to one or more of the various embodiments. Following the start block, in start block 802, in one or more of the various embodiments, a data source, one or more data models, a model panel, a display panel, etc., may be provided or displayed in the user interface.
[0155] In one or more of the various embodiments, the modeling engine may be configured to provide one or more search controls that enable the user to provide one or more search expressions that can be used to identify candidate data fields that may be part of other data models.
[0156] In one or more of the various embodiments, the modeling engine may be configured to provide one or more APIs that enable an external service or application to present a search expression or receive search result information.
[0157] In the decision block 804, in one or more of the various embodiments, if a search expression can be provided, control may flow to block 806; otherwise, control may loop back to the decision block 804. In one or more of the various embodiments, the modeling engine may be configured to support various query types or query languages. In some embodiments, the modeling engine may be configured to support compound search expressions that may consist of two or more other search expressions.
[0158] In one or more of the various embodiments, the modeling engine may be configured to support search expressions that may be based on various query languages, formal grammars, etc. For example, in some embodiments, the modeling engine may be configured to support SQL-like search expressions, regular expressions, Boolean expressions, custom query languages, etc. Therefore, in one or more of the various embodiments, the modeling engine may be configured to use rules, grammars, parsers, etc., provided via configuration information, taking into account the local environment or local requirements.
[0159] In block 806, in one or more of the various embodiments, the modeling engine may be configured to determine one or more candidate data fields that match the search expression. In one or more of the various embodiments, the modeling engine may be configured to parse or interpret the search expression into one or more query actions that can be performed to determine one or more data fields.
[0160] In one or more of the various embodiments, the modeling engine may be configured to determine one or more data fields in other data models based on matching values associated with data fields and search expressions. For example, in some embodiments, if the search expression is the word "Washington", the modeling engine may determine a set of data fields that have values containing the word "Washington". Similarly, a search expression containing, for example, "Washington OR Oregon" may be used to identify data fields that have values that may match Washington or Oregon. Also, in some embodiments, for example, a search expression based on a regular expression such as "^Washing.*" may be used to identify data fields that have values beginning with "Washing", such as data fields with the value "Washington" and data fields with the value "Washing Machine". Furthermore, in one or more of the various embodiments, the modeling engine may be configured to support custom search terms or grammars.
[0161] In block 808, in one or more of the various embodiments, the modeling engine may be configured to generate one or more metrics associated with one or more candidate data fields. In one or more of the various embodiments, the modeling engine may be configured to determine or generate one or more metrics that may provide context enabling a user to determine whether a candidate data field should be added to the working data model.
[0162] In one or more of the various embodiments, the modeling engine may be configured to provide metrics such as the number of visualizations that include or reference data fields, data source information (e.g., column names, table names, database names, etc.), etc. In some embodiments, other metrics may include the date since the last use or display, the number of data models that include or reference data fields, etc.
[0163] In block 810, in one or more of the various embodiments, the modeling engine may be configured to rank candidate data fields based on one or more metrics.
[0164] In one or more of the various embodiments, the modeling engine may be configured to include one or more evaluators or recommendation models that can be run to provide ranking values or ranking scores. In one or more of the various embodiments, the ranking score may be implicit or based on other metrics such as the number of views last week. Thus, in some embodiments, if a ranking score is associated with a candidate data field, that score can be used to rank the candidate data field relative to other candidate data fields. Alternatively, in one or more of the various embodiments, the modeling engine may be configured to directly rank and sort candidate data fields based on their associated metrics or other characteristics of the associated candidate data fields.
[0165] In block 812, in one or more of the various embodiments, the modeling engine may be configured to display one or more candidate fields in the model panel. In one or more of the various embodiments, the modeling engine may display some or all of the determined candidate data fields in the user interface. In some embodiments, the candidate data fields may be displayed in the model panel.
[0166] In one or more of the various embodiments, the modeling engine may be configured to exclude candidate data fields from display if some or all of them are ranked below a threshold rank value. Also in one or more of the various embodiments, additional criteria other than ranking may be used to determine which candidate data fields can be displayed and which can be excluded from display. For example, the modeling engine may be configured to exclude candidate data fields that have not been used for 120 days or more.
[0167] Next, in one or more of the various embodiments, control can be returned to the calling process.
[0168] Figure 9 shows a flowchart of process 900 for automated data model generation according to one or more of the various embodiments. Following the start block, in start block 902, candidate data fields may be provided in one or more of the various embodiments. As described above, the modeling engine may be configured to allow evaluation of one or more data fields displayed in the model panel for inclusion in the working data model.
[0169] In block 904, in one or more of the various embodiments, the modeling engine may be configured to determine one or more recommended visualizations based on selected data fields. As described above, the modeling engine may be configured to perform one or more actions to determine one or more recommended visualizations or visualization types.
[0170] In one or more of the various embodiments, the modeling engine may be configured to determine a set of recommended visualizations using one or more recommended models.
[0171] In one or more of the various embodiments, the data type of the selected data field may be associated with a specific visualization type based on static rules or defaults. Also, in one or more of the various embodiments, one or more visualization types may be determined based on the selected data field or other data fields that may exist in the working data model if present.
[0172] In block 906, in one or more of the various embodiments, the modeling engine may be configured to determine one or more common or popular data fields that may be recommended to be included in the working data model. As described above, the modeling engine may be configured to perform one or more actions to determine one or more recommended data fields.
[0173] In one or more of the various embodiments, the modeling engine may be configured to determine a recommended set of data fields using one or more recommended models.
[0174] In one or more of the various embodiments, one or more recommended data fields may be determined based on selected data fields or other data fields that may exist in the working data model if present.
[0175] In block 908, in one or more of the various embodiments, the modeling engine may be configured to determine one or more common questions or queries based on a provided data field or working data model. Similar to determining a recommended visualization or a recommended data field, the modeling engine may be configured to determine one or more questions or queries that may be of interest to the user, using one or more recommended models.
[0176] In block 910, in one or more of the various embodiments, the modeling engine may be configured to display one or more thumbnails for recommended visualizations, visualization types, recommended popular data fields, recommended questions or queries, etc.
[0177] In the decision block 912, in one or more of the various embodiments, control may flow to block 914 if a thumbnail can be selected, otherwise control may loop back to block 910. In one or more of the various embodiments, the user may be allowed to select one or more thumbnails. In some cases, such selection may be made by selecting a data field from the model panel and associating it with one of the thumbnails. For example, the user interface may allow the user to drag and drop a data field from the working data model to one or more of the recommended thumbnails.
[0178] In block 914, in one or more of the various embodiments, the modeling engine may be configured to generate and display a working visualization based on a selected thumbnail and a working data model. In one or more of the various embodiments, the modeling engine may do so if it provides sufficient information to generate a working visualization. In some embodiments, providing a working data model and associating data fields with suggested thumbnails may provide sufficient information to generate and display a working visualization.
[0179] Figure 10 shows a flowchart of process 1000 for automated data model generation according to one or more of the various embodiments. Following the start block, in start block 1002, in one or more of the various embodiments, the modeling engine may be configured to display one or more common / popular data fields (hereinafter referred to as popular data fields) in a tab panel on the user interface.
[0180] In one or more of the various embodiments, the modeling engine may be configured to identify one or more popular fields that may be displayed in a tab panel, using one or more evaluators or recommended models. In some embodiments, "popularity" may be determined based on one or more metrics or characteristics, such as the number of data models, visualizations, etc. that contain or reference the data field. Similarly, in some embodiments, popularity may be determined in part based on the number of times a user adopts or displays a visualization that contains or references a given data field.
[0181] In some embodiments, if a working data model is available or can be referenced, the modeling engine may be configured to determine popular data fields using one or more characteristics of the working data model.
[0182] In one or more of the various embodiments, popular data fields may be displayed on a tab panel using interactive user interface controls that allow the user to select one or more popular data fields from the tab panel. In some embodiments, such user interface controls may include buttons, list boxes, and the like.
[0183] In one or more of the various embodiments, the modeling engine may be configured to determine an evaluator or recommended model used to identify popular data fields using rules or instructions provided via configuration information. Similarly, in some embodiments, the modeling engine may be configured to determine sort order, popularity thresholds, tab panel layout, etc., based on the configuration information, taking into account the local environment or local requirements.
[0184] In block 1004, in one or more of the various embodiments, the modeling engine may be configured to display one or more thumbnails of visualizations associated with one or more popular data fields in the display panel. In one or more of the various embodiments, the modeling engine may be configured to determine one or more visualizations that use a data model that includes or references one or more popular fields. Also, in one or more of the various embodiments, if there may be many related visualizations, the modeling engine may be configured to rank the visualizations based on various criteria. Thus, in one or more of the various embodiments, visualizations that may be below a given rank may be excluded from display. For example, in some embodiments, visualizations that include or reference two or more data fields may be considered for display more than visualizations that include or reference only one of the popular data fields.
[0185] Therefore, in one or more of the various embodiments, the modeling engine may be configured to use one or more recommended models to determine which visualizations should be included in the set of displayed visualization thumbnails.
[0186] In one or more of the various embodiments, the modeling engine may be configured to determine which visualizations to include based on rules or instructions provided via configuration information, taking into account local requirements or the local environment.
[0187] In the decision block 1006, in one or more of the various embodiments, if one or more data fields can be selected from the tab panel, control may flow to block 1008; otherwise, control may loop back to block 1004. In some embodiments, when a popular data field can be selected, the modeling engine may be configured to change the appearance or styling of the popular data field, tab panel, etc., to highlight the selected popular data field more than the unselected data field. For example, the selected data field may be moved to one side of the tab panel, or their appearance may be changed to indicate that they are selected.
[0188] In block 1008, in one or more of the various embodiments, the modeling engine may be configured to determine one or more visualizations associated with a provided data field. Similar to the actions described in block 1004, the modeling engine may be configured to select one or more visualizations based on the currently selected popular data field. In one or more of the various embodiments, the selected popular data field can be applied as a filter to determine one or more visualizations to be displayed. In some embodiments, the selected popular data field can also be used as a filter to exclude one or more visualizations.
[0189] In one or more of the various embodiments, the modeling engine may be configured to determine one or more visualizations that include or reference selected popular data fields.
[0190] In block 1010, in one or more of the various embodiments, the modeling engine may be configured to update the visualizations that can be displayed on the display panel. In one or more of the various embodiments, the modeling engine may be configured to automatically update the recommended visualizations to include one or more visualizations that can be associated with one or more popular data fields in the filter. Similarly, in some embodiments, one or more visualizations that cannot be associated with one or more popular data fields in the filter may be excluded from display.
[0191] In the decision block 1012, in one or more of the various embodiments, if a visualization can be selected, control may flow to block 1014; otherwise, control may loop back to 1002. In one or more of the various embodiments, the user may be able to select a visualization from the displayed visualization thumbnails.
[0192] In block 1014, in one or more of the various embodiments, the modeling engine may be configured to determine one or more data fields to be displayed in a tab panel based on one or more selected visualizations.
[0193] In one or more of the various embodiments, when a visualization can be selected, the modeling engine can determine one or more data fields that may be included in or referenced by the data model associated with the selected visualization.
[0194] In one or more of the various embodiments, the modeling engine may be configured to indicate, using user interface features or styling, whether a data field in a tab panel can be associated with one or more selected visualizations.
[0195] Next, in one or more of the various embodiments, control can be returned to the calling process.
[0196] It will be understood that each block of each flowchart diagram and each combination of blocks in each flowchart diagram can be implemented by computer program instructions. These program instructions may be provided to the processor to generate a machine such that instructions executed by the processor create means for implementing the actions specified in each flowchart block or combination of blocks. Computer program instructions can be executed by the processor to generate a computer implementation process such that a series of operational steps executed on the processor provide steps for implementing the actions specified in each flowchart block or combination of blocks. Computer program instructions can also cause at least some of the operational steps shown in each flowchart block to be executed in parallel. Furthermore, some of the steps may be executed across multiple processors, as can happen in a multiprocessor computer system. In addition, one or more blocks or combinations of blocks in each flowchart diagram may also be executed simultaneously with other blocks or combinations of blocks, or in an order different from the illustrated order, without departing from the scope or spirit of the invention.
[0197] Therefore, each block in each flowchart supports a combination of means for performing a specified action, a combination of steps for performing a specified action, and program instructions for performing a specified action. It will also be understood that each block in each flowchart and each combination of blocks in each flowchart can be implemented by a special-purpose hardware-based system or a combination of special-purpose hardware and computer instructions for performing a specified action or step. The above examples should not be construed as limiting or exhaustive, but rather as exemplary use cases illustrating at least one implementation of various embodiments of the present invention.
[0198] Furthermore, in one or more embodiments (not shown), the logic of an exemplary flowchart may be executed using an embedded logic hardware device instead of a CPU, such as an application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), programmable array logic (PAL), etc., or a combination thereof. The embedded logic hardware device can directly execute its embedded logic to perform actions. In one or more embodiments, a microcontroller may be configured to directly execute its own embedded logic to perform actions, and to access its own internal memory and its own external input / output interfaces (e.g., hardware pins or wireless transceivers), like a system-on-a-chip (SOC), to perform actions.
Claims
1. A method for managing data visualization, the method being executed by one or more processors, A step of providing a data source, a model panel, and a display panel, wherein the data source is associated with one or more data models, each including multiple data fields. A step of taking further action in response to the provided search expression, A step of determining one or more candidate data fields based on the search expression and one or more data models, wherein one or more values associated with each candidate data field match the provided search expression and the one or more candidate data fields are displayed in the model panel; A step of generating a working data model based on a portion of one or more candidate data fields, wherein the portion of the one or more candidate data fields is included in the working data model, A step of determining one or more visualizations based on one or more recommended models and the working data model, wherein a portion of the one or more visualizations is determined based on the working data model and one or more shared data fields included in the one or more visualizations, and the one or more visualizations are listed in the display panel. A step of generating a working visualization based on the visualizations listed in the display panel and the working data model, wherein one or more data fields included in the working data model are associated with the working visualization. Steps to take further action, including, The steps of updating the working data model to include one or more other candidate data fields, one or more recommended visualizations, or the working visualization based on the updated working data model in response to updating the working data model to include one or more other candidate data fields, Methods that include...
2. A step of determining one or more recommended visualizations based on the association between one or more data fields in the working data model and other data fields included in one or more other visualizations, wherein the one or more recommended visualizations are listed in the display panel, The steps include updating the updated working data model to include other data fields in response to the selection of one recommended visualization, The method according to claim 1, further comprising:
3. A step of determining one or more characteristics associated with the one or more candidate data fields, wherein the one or more characteristics include one or more of the following: a count of the number of visualizations that reference the one or more candidate data fields, data source information associated with the one or more candidate data fields, or a sample of values for the one or more candidate data fields. The steps include displaying one or more parts of the one or more characteristics for each selected candidate data field in the field information panel, The method according to claim 1, further comprising:
4. The steps include determining another candidate data field from the one or more candidate data fields, The steps include updating the working visualization to include the other candidate data field, The steps include updating the working data model to include the other candidate data field, The method according to claim 1, further comprising:
5. A step of determining one or more popular data fields based on one or more data models, wherein the one or more popular data fields are determined based on one or more metrics associated with the one or more popular data fields, and the one or more popular data fields are displayed in a tab panel. A step of determining a collection of one or more popular visualizations based on one or more popular data fields, wherein the one or more popular visualizations are displayed on the display panel, A step of determining a portion of one or more popular data fields, wherein the portion of the one or more popular data fields is selected by the user. A step of modifying a collection of one or more popular visualizations based on the portion of one or more popular data fields, wherein each popular visualization associated with the portion of the one or more popular data fields is included in the collection, and each popular visualization not associated with the portion of the one or more popular data fields is excluded from the collection. The method according to claim 1, further comprising:
6. In a system for managing data visualization, It is a network computer: At least memory to store instructions; A step of providing a data source, a model panel, and a display panel, wherein the data source is associated with one or more data models, each including multiple data fields. A step of taking further action in response to the provided search expression, A step of determining one or more candidate data fields based on the search expression and one or more data models, wherein one or more values associated with each candidate data field match the provided search expression and the one or more candidate data fields are displayed in the model panel; A step of generating a working data model based on a portion of one or more candidate data fields, wherein the portion of the one or more candidate data fields is included in the working data model, A step of determining one or more visualizations based on one or more recommended models and the working data model, wherein a portion of the one or more visualizations is determined based on the working data model and one or more shared data fields included in the one or more visualizations, and the one or more visualizations are listed in the display panel. A step of generating a working visualization based on the visualizations listed in the display panel and the working data model, wherein one or more data fields included in the working data model are associated with the working visualization. Steps to take further action, including, The steps of updating the working data model to include one or more other candidate data fields, one or more recommended visualizations, or the working visualization based on the updated working data model in response to updating the working data model to include one or more other candidate data fields, One or more processors that execute instructions that perform actions including; Network computers including; and It is a client computer: At least memory to store instructions; The steps include providing the aforementioned search expression, The steps include displaying the aforementioned model panel on a hardware display, The steps include displaying the aforementioned display panel on the hardware display, One or more processors that execute instructions that perform actions including; Client computers including; A system equipped with these features.
7. The one or more processors of the network computer are A step of determining one or more recommended visualizations based on the association between one or more data fields in the working data model and other data fields included in one or more other visualizations, wherein the one or more recommended visualizations are listed in the display panel, The steps include updating the updated working data model to include other data fields in response to the selection of one recommended visualization, The system according to claim 6, which executes an instruction to perform an action that further includes the following:
8. The one or more processors of the network computer are A step of determining one or more characteristics associated with the one or more candidate data fields, wherein the one or more characteristics include one or more of the following: a count of the number of visualizations that reference the one or more candidate data fields, data source information associated with the one or more candidate data fields, or a sample of values for the one or more candidate data fields. The steps include displaying one or more parts of the one or more characteristics for each selected candidate data field in the field information panel, The system according to claim 6, which executes an instruction to perform an action that further includes the following:
9. The one or more processors of the network computer are The steps include determining another candidate data field from the one or more candidate data fields, The steps include updating the working visualization to include the other candidate data field, The steps include updating the working data model to include the other candidate data field, The system according to claim 6, which executes an instruction to perform an action that further includes the following:
10. The one or more processors of the network computer are A step of determining one or more popular data fields based on one or more data models, wherein the one or more popular data fields are determined based on one or more metrics associated with the one or more popular data fields, and the one or more popular data fields are displayed in a tab panel. A step of determining a collection of one or more popular visualizations based on one or more popular data fields, wherein the one or more popular visualizations are displayed on the display panel, A step of determining a portion of one or more popular data fields, wherein the portion of the one or more popular data fields is selected by the user. A step of modifying a collection of one or more popular visualizations based on the portion of one or more popular data fields, wherein each popular visualization associated with the portion of the one or more popular data fields is included in the collection, and each popular visualization not associated with the portion of the one or more popular data fields is excluded from the collection. The system according to claim 6, which executes an instruction to perform an action that further includes the following:
11. A network computer for managing data visualization, At least memory to store instructions; A step of providing a data source, a model panel, and a display panel, wherein the data source is associated with one or more data models, each including multiple data fields. A step of taking further action in response to the provided search expression, A step of determining one or more candidate data fields based on the search expression and one or more data models, wherein one or more values associated with each candidate data field match the provided search expression and the one or more candidate data fields are displayed in the model panel; A step of generating a working data model based on a portion of one or more candidate data fields, wherein the portion of the one or more candidate data fields is included in the working data model, A step of determining one or more visualizations based on one or more recommended models and the working data model, wherein a portion of the one or more visualizations is determined based on the working data model and one or more shared data fields included in the one or more visualizations, and the one or more visualizations are listed in the display panel. A step of generating a working visualization based on the visualizations listed in the display panel and the working data model, wherein one or more data fields included in the working data model are associated with the working visualization. Steps to take further action, including, The steps of updating the working data model to include one or more other candidate data fields, one or more recommended visualizations, or the working visualization based on the updated working data model in response to updating the working data model to include one or more other candidate data fields, One or more processors that execute instructions that perform actions including; Network computers, including
12. The one or more processors described above are: A step of determining one or more recommended visualizations based on the association between one or more data fields in the working data model and other data fields included in one or more other visualizations, wherein the one or more recommended visualizations are listed in the display panel, The steps include updating the updated working data model to include other data fields in response to the selection of one recommended visualization, The network computer according to claim 11, which executes an instruction to perform an action that further includes the following:
13. The one or more processors described above are: A step of determining one or more characteristics associated with the one or more candidate data fields, wherein the one or more characteristics include one or more of the following: a count of the number of visualizations that reference the one or more candidate data fields, data source information associated with the one or more candidate data fields, or a sample of values for the one or more candidate data fields. The steps include displaying one or more parts of the one or more characteristics for each selected candidate data field in the field information panel, The network computer according to claim 11, which executes an instruction to perform an action that further includes the following:
14. The one or more processors described above are: The steps include determining another candidate data field from the one or more candidate data fields, The steps include updating the working visualization to include the other candidate data field, The steps include updating the working data model to include the other candidate data field, The network computer according to claim 11, which executes an instruction to perform an action that further includes the following:
15. The one or more processors described above are: A step of determining one or more popular data fields based on one or more data models, wherein the one or more popular data fields are determined based on one or more metrics associated with the one or more popular data fields, and the one or more popular data fields are displayed in a tab panel. A step of determining a collection of one or more popular visualizations based on one or more popular data fields, wherein the one or more popular visualizations are displayed on the display panel, A step of determining a portion of one or more popular data fields, wherein the portion of the one or more popular data fields is selected by the user. A step of modifying a collection of one or more popular visualizations based on the portion of one or more popular data fields, wherein each popular visualization associated with the portion of the one or more popular data fields is included in the collection, and each popular visualization not associated with the portion of the one or more popular data fields is excluded from the collection. The network computer according to claim 11, which executes an instruction to perform an action that further includes the following: