Enterprise software systems receive, generate, and store data related to many aspects of an enterprise. Reporting tools may access the data and present the data in a variety of graphic visualizations, including different types and formats of graphs. The visualizations might be used by consumers thereof to gain insights into the operations of the enterprise and/or other purposes.
The data may be represented by different data structures (e.g., objects) that may be classified as measures (e.g., revenue, taxes) having values that can be used in calculations, and dimensions (e.g., year, country) defining categories into which the measures can be filtered, grouped, and labeled for analysis and reporting.
Content creators may define visualizations to include presentations of values of one or more measures of the enterprise's data where the created visualizations may subsequently be consumed by one or more content consumers. Conventionally, content creators create visualizations based on the measures available in a data set at the time the visualization is created. The measures are those available at a specific point in time and constitute a static list or set of measures. The visualizations created by the content creator are then published so that content consumers can use them.
Conventional reporting tools provide many types of visualizations for graphically presenting values of one or more measures. However, more efficient and flexible systems and methods are desired to generate visualizations.
The following description is provided to enable any person in the art to make and use the described embodiments. Various modifications, however, will remain readily apparent to those in the art.
In some example contexts, use-cases, and embodiments, one or more terms will be used in the present disclosure. As a matter of introduction and to ease the understanding of the present disclosure, a number of terms will be introduced, where the full meaning of the following terms will be further understood in context of the disclosure herein, on the whole.
In some contexts and scenarios, content creator 105 creates, at a specific point in time, a visualization at 125 based on a set of data (i.e., a data set) classified in measures and dimensions. Content creator 105 creates the visualizations by, in part, adding one or more measures of the data set to a data structure representation of the visualization being created at 130. The visualizations may further be defined and include one or more calculations, where a calculation is typically a computation based on one or more of the measures of the data set. For example, a first calculation (c1) may be the result of a computation including a first measure (m1) and a second measure (m2) such as, c1=m2−m1. A visualization 200 based on the inputs of m1, m2, and c1 might include a bar chart with graphic bars representing m1 (205), m2 (210), and c1 (215), as shown in
At 135, the content creator publishes the created visualization so that it can be accessed and subsequently used by a content consumer at 140.
At some time 145, 150 after the creation and publication of the visualization, additional (i.e., new) measures (e.g., m3, m4) and calculations (e.g., c2) may be added to the storage containing the data set associated with or referenced by the visualization created, defined and published at 125-135, respectively. If content consumer 110 wants to have a visualization that includes/uses the newly added measure(s) and calculation(s), as determined at 165, then the process of
At 355, a determination is made by content consumer 310 whether the measures and calculations newly added at 345 and 350 are to be used in the previously created visualization. For example, if the content consumer would like to include the newly added measures and calculations in a previously created visualization in an effort to, for example, see an accurate and complete view of the current (i.e., updated) state of the data, then the present disclosure includes a mechanism for the content consumer to use the newly added measures and calculations in previously created visualizations. This aspect is illustrated in
Upon returning to 340, process 300 of
In the event that content consumer 310 does not want to use the measures and calculations newly added to the data set's storage at 345 and 350, then no further action is performed with respect to the example of
Referring to
Continuing with
According to
Having created the MIC and selected or otherwise designated the measures and calculations to be included in MIC 415, the content creator further associates or binds MIC 415 to at least one visualization 425. Visualization 425 may comprise one or more graphic visualizations of the same or different type(s). Visualization 425 may include charts 430, geo maps 435, and other visualizations not specifically shown in
For example, a consumer might refresh a browser on one of their mobile computing devices. The refreshing of the browser may invoke a call to (re-)render one or more visualizations (e.g., a chart) on a display of the mobile computing device. In the event that the dynamic list of measures and calculations of a MIC associated with the visualization(s) to be rendered has changed since the last rendering of the visualization, then the refreshing of the browser may also cause the rendering of the MIC to include the new measures and calculations. In some regards, the dynamic list may be “fresh” when a content consumer opens content (i.e., a visualization) associated with the input control.
At operation 610, the content consumer may invoke a use or otherwise consumption of the visualization. The visualization might be included in an analysis and reporting thereof in an effort to, for example, better understand the operations of a relevant enterprise or organization related to the data (i.e., measures and calculations).
In reply to operation 610, operation 615 may proceed to update the visualization to include a current listing of at least one measure to define the visualization at the time of the invocation of the visualization. That is, operation 615 may operate to update the visualization to be consumed (as invoked at operation 610) with the new measures, if any, that may have been added to the data set associated with the visualization subsequent to the creation of the visualization (prior to operation 605) and up until the time of operation 610.
In accordance with other aspects herein, an input control may also be created by the content creator, at the time the visualization is created, that specifies the at least one measure selected from the data storage to include in the listing of the at least one measure. The content creator may further specify that the visualization is bound to the input control.
At operation 620, after the visualization has been updated to include any additional, different, or changed measures, the updated visualization may be used or consumed in reply to the content consumer's earlier request. In this manner, process 600 may provide a mechanism whereby a content consumer can be assured to have a current version or extent of data included in visualizations without the content creator having to re-create previously generated visualizations in order to have the updated data reflected in a current rendering of the visualizations.
System 700 includes an input control generator service or server 715. In some embodiments, a functionality or service for creating and editing of input controls may be deployed as a cloud-based service, whereas in some other embodiments system 700 may include a client-server architecture. System 700 may encompass both scenarios. In the instance system 700 includes a server at 715, the devices at 705 may be client devices running applications as discussed above. In an instance system includes a cloud-based server at 715, the devices at 705 may execute a browser that is used by a user to interface with service 715.
System 700 further includes a backend system that can generate, automatically, executable code or instructions to perform a process to facilitate and support the creation input controls and visualizations. In some aspects herein, a user may provide an indication of the measures and calculations to be accessed by a content consumer, as implemented in an application 710 and/or server or service 715, which may operate in cooperation with the processing of a backend system 720 to generate a program to effectuate the input control generation that may be used in the use of visualizations. In some aspects, a Modeler (or a Content Creator as well if the user has Modeler role/authorization) will typically navigate to a “Modeler” view to model data of a Model/Dataset that can come from one or more different data sources (e.g., a file stored in the user's local computer, file(s) from a BOC database, file(s) from remote systems that could be backed by other databases, etc.). The Modeler will model the Dimensions and Measures for BOC specifically before a Content Creator can use them to build visualizations. In one example, a client 705 executes an application 710 to present an input control generator via a user interface (UI) to a user (e.g., Content Creator) on a display of client 705. The user manipulates UI elements within the UI to indicate and specify measures and calculations of an input control to be defined, where a server or service 715 embodying the input control generator operates. The Measure Input Control (MIC) is created in the browser and stored in the back-end. The logic itself is executed by the browser/client-side code. When the Content Creator/Consumer selects a measure defined in the MIC, the client-side will request the back-end for that specific measure (i.e., a control to select measures). In some respects,
Data store 725 may comprise any data source or sources that are or become known. Data store 725 may comprise a relational database, a HTML document, an eXtensible Markup Language (XML) document, or any other data storage system storing structured and/or unstructured data files. The data of data store 725 may be distributed among several data sources. Embodiments are not limited to any number or types of data sources.
Data store 725 may implement an “in-memory” database, where a full database is stored in volatile (e.g., non-disk-based) memory (e.g., Random Access Memory). The full database may be persisted in and/or backed up to fixed disks (not shown). Embodiments herein are not limited to an in-memory implementation. For example, data may be stored in Random Access Memory (e.g., cache memory for storing recently-used data) and other forms of solid state memory and/or one or more fixed disks (e.g., persistent memory for storing their respective portions of the full database).
Apparatus 800 includes processor 805 operatively coupled to communication device 820, data storage device 830, one or more input devices 810, one or more output devices 820 and memory 825. Communication device 815 may facilitate communication with external devices, such as a reporting client, or a data storage device. Input device(s) 810 may comprise, for example, a keyboard, a keypad, a mouse or other pointing device, a microphone, knob or a switch, an infra-red (IR) port, a docking station, and/or a touch screen. Input device(s) 810 may be used, for example, to enter information into apparatus 800. Output device(s) 820 may comprise, for example, a display (e.g., a display screen) a speaker, and/or a printer.
Data storage device 830 may comprise any appropriate persistent storage device, including combinations of magnetic storage devices (e.g., magnetic tape, hard disk drives and flash memory), optical storage devices, Read Only Memory (ROM) devices, etc., while memory 825 may comprise Random Access Memory (RAM), Storage Class Memory (SCM) or any other fast-access memory.
Services 835 and application 840 may comprise program code executed by processor 805 to cause apparatus 800 to perform any one or more of the processes described herein (e.g.,
Data 845 (either cached or a full database) may be stored in volatile memory such as memory 825. Data storage device 830 may also store data and other program code and instructions for providing additional functionality and/or which are necessary for operation of apparatus 800, such as device drivers, operating system files, etc.
The foregoing diagrams represent logical architectures for describing processes according to some embodiments, and actual implementations may include more or different components arranged in other manners. Other topologies may be used in conjunction with other embodiments. Moreover, each component or device described herein may be implemented by any number of devices in communication via any number of other public and/or private networks. Two or more of such computing devices may be located remote from one another and may communicate with one another via any known manner of network(s) and/or a dedicated connection. Each component or device may comprise any number of hardware and/or software elements suitable to provide the functions described herein as well as any other functions. For example, any computing device used in an implementation of a system according to some embodiments may include a processor to execute program code such that the computing device operates as described herein.
All systems and processes discussed herein may be embodied in program code stored on one or more non-transitory computer-readable media. Such media may include, for example, a floppy disk, a CD-ROM, a DVD-ROM, a Flash drive, magnetic tape, and solid state Random Access Memory (RAM) or Read Only Memory (ROM) storage units. Embodiments are therefore not limited to any specific combination of hardware and software.
Embodiments described herein are solely for the purpose of illustration. Those in the art will recognize other embodiments may be practiced with modifications and alterations to that described above.