Methods, systems, and computer program products for visually representing and displaying data are described. The visual representation may be a data animation. A data query may be submitted, a time measurement for processing the query may be obtained, and a sample size of the query may be adjusted based on the time measurement and a frame refresh rate of a data animation. A data animation may be generated based on one or more results of the query.
|
20. A non-transitory computer-readable medium embodying instructions that, when executed by a processor perform operations comprising:
executing a first data query on a data structure in a database, the first data query having a first sample size describing a first number of rows at the data structure retrieved by the first data query;
determining a time measurement for performing the first data query, the time measurement being an amount of time between submission of the first data query and obtaining a first data query result;
selecting a second sample size based on the time measurement and a frame refresh rate, wherein the second sample size describes a second number of rows at the data structure, and wherein the second number of rows at the data structure is different than the first number of rows; and
generating an animated data visualization based on one or more results of the second data query.
1. A method for generating an animated data visualization, the method comprising:
executing a first data query on a data structure in a database, the first data query having a first sample size describing a first number of rows at the data structure retrieved by the first data query;
determining, using one or more hardware processors, a time measurement for performing the first data query, the time measurement being an amount of time between a submission of the first data query and obtaining a first data query result;
selecting, using the one or more hardware processors, a second sample size based on the time measurement and a frame refresh rate, wherein the second sample size describes a second number of rows at the data structure, and wherein the second number of rows at the data structure is different than the first number of rows;
executing a second data query on the data structure, the second data query having the second sample size; and
generating, using the one or more hardware processors, the animated data visualization based on one or more results of the second data query.
11. An apparatus for generating an animated data visualization, the apparatus comprising:
memory to store instructions; and
one or more hardware processors to execute the instructions to perform operations comprising:
executing a first data query on a data structure in a database, the first data query having a first sample size describing a first number of rows at the data structure retrieved by the first data query;
determining a time measurement for performing the first data query, the time measurement being an amount of time between submission of the first data query and obtaining a first data query result;
selecting a second sample size based on the time measurement and a frame refresh rate, wherein the second sample size describes a second number of rows at the data structure, and wherein the second number of rows at the data structure is different than the first number of rows;
executing a second data query on the data structure, the second data query having the second sample size; and
generating the animated data visualization based on one or more results of the second data query.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
12. The apparatus of
13. The apparatus of
14. The apparatus of
15. The apparatus of
16. The apparatus of
17. The apparatus of
18. The apparatus of
19. The apparatus of
|
This application is a continuation of prior application Ser. No. 13/828,681, filed on Mar. 14, 2013, which is incorporated by reference herein in its entirety.
The present disclosure relates to displaying information. In an example embodiment, the disclosure relates to visually representing data and displaying data animations.
Data animation is a process for summarizing and displaying data using an animation comprising a sequence of frames. The underlying data may reside in a database and/or may be modeled using a plurality of dimensions. Each frame of the animation may, for example, correspond to a different period of time and may comprise one or more plots, graphs and/or charts. The plots, graphs and/or charts may be based on two or more data variables. Each axis of the plot, graph or chart may represent a different dimension or measure. In addition, the data region of the plot, graph or chart may expose additional measures and/or dimensions of the underlying data. For example, a scatter plot may utilize different colors to visualize an otherwise hidden dimension.
In analyzing data, users may search for recurring patterns (e.g., clustering and the like), trends, and correlations. The underlying data may be represented using one or more measures and one or more dimensions. As the amount of data increases, the potential for data patterns to be hidden may increase. For example, viewing a summary of sales information over a period of twenty years may obscure data patterns that would be apparent in viewing sales information over a period of one year. Similarly, as the number of dimensions increases, the data may become more difficult to visualize.
An example of a potentially hidden data pattern is a shift in buying behavior that slowly occurs over an extended time period, e.g., ten years. Cumulative sales data for the ten year period may suppress a data pattern showing strong sales in the early years and weak sales in the latter years. Visualizing the underlying data may expose the shift in buying behavior. By sequentially displaying a plurality of frames of an animation at a specified refresh rate, patterns and trends may be recognized. Due to the requirements of a particular frame refresh rate and the time required to generate each frame, however, it may be difficult to create a data animation in substantially real-time.
The present disclosure is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
The description that follows includes illustrative systems, methods, techniques, instruction sequences, and computing program products that embody example embodiments of the present invention. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the inventive subject matter. It will be evident, however, to those skilled in the art, that embodiments of the inventive subject matter may be practiced without these specific details. In general, well-known instruction instances, protocols, structures and techniques have not been shown in detail.
Generally, methods, systems, and computer program products for visually displaying data are described. The visually displayed data may assist a user in interpreting a data space that may be difficult to view due to human perceptual limitations, and limited human domain knowledge. In one example embodiment, a data animation of frames comprising plots, graphs, and/or charts may be displayed. Each frame of the animation may be displayed as a still frame, or as a sequence of frames played at a selected frame rate.
Example Data Configuration
Query processing system 140 may accept a query and may provide a query result. In one example embodiment, the query processing system 140 may determine an amount of time to process a query and/or may generate a frame of a data animation based on the query results. Data repository 150 may store one or more of: underlying data (e.g., data structure 100), one or more query results, and/or one or more generated frames of a data animation.
Network 170 may be a local area network (LAN), a wireless network, a metropolitan area network (MAN), a wide area network (WAN), a wireless network, a network of interconnected networks, the public switched telephone network (PSTN), and the like.
In one example embodiment, the animation processing system 160 may formulate a query and forward the query to the query processing system 140. In one example embodiment, the animation processing system 160 may generate one or more frames of a data animation. The animation processing system 160 may set a sample size of the query based upon a frame refresh rate of the data animation, as described more fully below.
Hidden relationships may be revealed by enabling users to visually explore analytic aspects of data with relative positional information (in contrast to absolute positional information available with a complete data set). For example, data animation may reveal hidden relationships as a correlation among selected data points by focusing on a relative distribution of shapes among data points, as shown in
In one example embodiment, a user may select a frame transition duration via input 224. The frame transition duration may be the time to transition from a current frame 200 to a next frame 200. For example, a user may select a frame transition duration of 0.25 seconds.
In one example embodiment, the time required to generate a frame may exceed the time allotted by a frame refresh rate. For example, if the sample size (e.g., the number of rows) selected for generating the frame is too large, the time required to generate a frame may exceed the time allotted by a frame refresh rate. In one example, a frame rate of 30 frames per minute may require that a frame is provided every two seconds. If greater than two seconds are required for generating the frame, then the time required to generate a frame may exceed the time allotted by the frame refresh rate. In one example embodiment, the sample size may be dynamically adjusted based on the frame refresh rate and/or the time allocated to generate a frame.
In one example embodiment, the system may make a database call to calculate boundaries for the selected measures for each applicable year (by each airline). In one example embodiment, the database query may constrain the result set to a specified sample size in order, for example, to achieve a particular response time. For example, the underlying data may contain one million rows of data, where approximately fifty thousand rows of data (a slice of the data) may correspond to each year. The processing of fifty thousand rows of data may exceed the time allotted by the frame refresh rate. In one example embodiment, a sample size may be dynamically selected and a number of rows may be processed based on the selected sample size. For example, a sample comprising a subset of rows may be selected for processing and, as a result, the processing may be performed within the time allotted by the frame refresh rate. The sample may be substantially uniformly distributed across the applicable slice of data.
In one example embodiment, a sample size may be selected and the corresponding number of rows of the database may be processed within the time allotted by the frame rate and the results may be displayed on a computer screen. For example, a query for a selected measure (e.g. average airline flight delay time) based on a sample size of 2,500 rows of data may be processed and displayed. The execution time for the database query may be compared to the selected frame refresh rate and the sample size may be adjusted for the next iteration of processing (e.g., for the generation of the next frame utilizing the next slice of data). In one example embodiment, the sample size may be set to the maximum number of rows that corresponds to a query execution time of less than the time allotted by the frame refresh rate. In one example embodiment, a target query execution time is proportional to a frame refresh time period (i.e., the inverse of the frame refresh rate) multiplied by a margin value. In one example embodiment, a target query execution time is set equal to a frame refresh time period multiplied by a margin value. For example, the inverse of a frame refresh rate of 30 frames per minute would correspond to a frame refresh time period of two seconds. If an example margin value of 75% is selected, the target query execution time would be 1.5 seconds. The sample size may be adjusted such that the query execution time is equal to or less than the target query execution time.
In one example embodiment, random sampling may be performed by querying a database table and constraining the results using a “random number” column. The “random number” column may contain values from 0.0 to 1.0 that are randomly and substantially uniformly distributed across the rows of a database table. A filter condition may be used to sample the data. For example, a filter condition including values from 0.0 to 1.0 may include all data in the database table (i.e., the population); a filter condition including a smaller range of values, e.g. 0.50 to 1.0, may be selected to provide a suitable sample of the data. In one example embodiment, the sampling may enable a reduction in the size of the data being viewed without a bias of the original data distribution by utilizing random sampling. In one example embodiment, the system can be extended to estimate a population's summaries from a sample. This may be accomplished by prorating the summaries. In one example embodiment, stratified sampling may be used to produce a substantially uniformly distributed random sampling of the data structure.
The apparatus 600 is shown to include a processing system 602 that may be implemented on a server, client, or other processing device that includes an operating system 604 for executing software instructions. In accordance with an example embodiment, the apparatus 600 may include a user interface module 606, a query module 610, a frame generation module 614, a data animation module 618, and a sample size calculation module 622. In accordance with an example embodiment, the apparatus 600 may include a data storage interface 626.
The user interface module 606 may provide for the selection of a data animation and a frame refresh rate, and may present a still frame or an animation of frames to a user. The user interface module 606 may provide for the selection of various measures and dimensions, and may provide for the selection of the type of mechanism for displaying data. For example, the user interface module 606 may provide for the selection of a scatter plot graph and may provide for the selection of parameters for the scatter plot graph. The query module 610 may generate a query for a database table. The frame generation module 614 may obtain a result of a query on a database table and generate a data frame based on the obtained result. The data animation module 618 may be responsible for coordinating the creation of a data animation comprising a plurality of frames, maintaining the animation, and coordinating the display of the animation in conjunction with the user interface module 606. The sample size calculation module 622 may be responsible for dynamically determining the size of the sample based on the selected frame refresh rate and a time required to generate one or more previous frames. The data storage interface 626 may provide access to, for example, a database(s) that stores the underlying data configuration and/or the generated frame(s).
Based on the selected measures, a query may be formulated and processed (operation 708). In one example embodiment, the query may include a selected sample size. In one example embodiment, the sample size may initially be based on a predefined default value. In one example embodiment, the sample size may be based on a time required to generate an average data frame.
One or more frames 200 may be generated based on the query results (operation 712). For example, the frames 200 of
In one example embodiment, the sample size may be set to a value that enables a frame 200 to be generated within a frame refresh time period. The sample size may be based on an amount of time to generate one or more prior frames (operation 716). In one example embodiment, the amount of time to generate a prior frame may be based on the amount of time to process a query corresponding to a prior frame, and/or the amount of time to generate a prior frame. In one example embodiment, the amount of time to generate a prior frame may be based on the amount of time to process an average query corresponding to a plurality of prior frames, and/or the amount of time to generate an average frame corresponding to a plurality of prior frames.
In one example embodiment, a timer may be used to measure the amount of time between the submission of a query and a reception of the query results to determine an amount of time to generate one or more frames. In one example embodiment, a timer may be used to measure the amount of time between the submission of a query and the completion of a generated frame(s) to determine an amount of time to generate one or more frames. In one example embodiment, the query results may include a value indicating the amount of time required to process the corresponding query and/or to process an average query based on a plurality of previous queries.
In one example embodiment, the sample size may be increased if the obtained time measurement is smaller than an inverse of the frame refresh rate and the sample size may be decreased if the obtained time measurement exceeds the inverse of the frame refresh rate. In one example embodiment, the sample size may be increased if the obtained time measurement multiplied by a multiplication factor is smaller than an inverse of the frame refresh rate and the sample size may be decreased if the obtained time measurement multiplied by the multiplication factor exceeds the inverse of the frame refresh rate.
In one example embodiment, a test may be performed to determine if all desired frames have been generated (operation 720). If all desired frames have not been generated, the method may transition to operation 708. If all desired frames have been generated, the method may end.
Embodiments may also, for example, be deployed by Software-as-a-Service (SaaS), Application Service Provider (ASP), or utility computing providers, in addition to being sold or licensed via traditional channels. The computer may be a server computer, a personal computer (PC), a tablet PC, a set-top box (SIB), a PDA, cellular telephone, or any processing device capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that device. Further, while only a single computer is illustrated, the term “computer” shall also be taken to include any collection of computers that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
The example computer processing system 800 includes processor 802 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), main memory 804 and static memory 806, which communicate with each other via bus 808. The processing system 800 may further include video display unit 810 (e.g., a plasma display, a liquid crystal display (LCD) or a cathode ray tube (CRT)). The processing system 800 also includes alphanumeric input device 812 (e.g., a keyboard), a cursor control device 814 (e.g., a mouse, touch screen, or the like), a disk drive unit 816, a signal generation device 818 (e.g., a speaker), and a network interface device 820.
The disk drive unit 816 includes machine-readable medium 822 on which is stored one or more sets of data structures and instructions 824 (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. The instructions 824 may also reside, completely or at least partially, within the main memory 804 and/or within the processor 802 during execution thereof by the processing system 800, the main memory 804 and the processor 802 also constituting computer-readable, tangible media.
The instructions 824 may further be transmitted or received over network 826 via a network interface device 820 utilizing any one of a number of well-known transfer protocols (e.g., Hypertext Transfer Protocol).
While the machine-readable medium 822 is shown in an example embodiment to be a single medium, the term “computer-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “computer-readable medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the computer and that cause the computer to perform any one or more of the methodologies of the present application, or that is capable of storing, encoding or carrying data structures utilized by or associated with such a set of instructions. The term “computer-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media.
Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware modules. A hardware module is a tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., the computing device) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.
In various embodiments, a hardware module may be implemented mechanically or electronically. For example, a hardware module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or application-specific integrated circuit (ASIC) to perform certain operations. A hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
Accordingly, the term “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where the hardware modules comprise a general-purpose processor configured using software, the general-purpose processor may be configured as respective different hardware modules at different times. Software may accordingly configure a processor, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
Modules can provide information to, and receive information from, other modules. For example, the described modules may be regarded as being communicatively coupled. Where multiples of such hardware modules exist contemporaneously, communications may be achieved through signal transmissions (e.g., over appropriate circuits and buses) that connect the modules. In embodiments in which multiple modules are configured or instantiated at different times, communications between such modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple modules have access. For example, one module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further module may then, at a later time, access the memory device to retrieve and process the stored output. Modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
The various operations of example methods described herein may be performed, at least partially, by one or more processors 802 that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors 802 may constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
Similarly, the methods described herein may be at least partially processor-implemented. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented modules. The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processors may be located in a single location (e.g., within a home environment, an office environment, or as a server farm), while in other embodiments the processors may be distributed across a number of locations.
While the invention(s) is (are) described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the invention(s) is not limited to them. In general, techniques for maintaining consistency between data structures may be implemented with facilities consistent with any hardware system or hardware systems defined herein. Many variations, modifications, additions, and improvements are possible.
Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the invention(s). In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the invention(s).
Han, Qiang, Potiagalov, Alexei, Ivanov, Ivailo
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5864342, | Aug 04 1995 | Microsoft Technology Licensing, LLC | Method and system for rendering graphical objects to image chunks |
5878426, | Dec 23 1996 | Unisys Corporation | Statistical database query using random sampling of records |
5890150, | Jan 24 1997 | Hitachi, Ltd. | Random sampling method for use in a database processing system and a database processing system based thereon |
5937415, | Dec 13 1995 | SYBASE, INC | Data base development system with methods facilitating copying of data from one data source to another |
6160559, | Sep 30 1997 | Intel Corporation | Method and apparatus for providing frame-time feedback to graphics application programs |
6313838, | Feb 17 1998 | Oracle America, Inc | Estimating graphics system performance for polygons |
6384821, | Oct 04 1999 | Nvidia Corporation | Method and apparatus for delivering 3D graphics in a networked environment using transparent video |
7028054, | Jul 02 2001 | International Business Machines Corporation | Random sampling as a built-in function for database administration and replication |
7610272, | Nov 29 2004 | SAP SE | Materialized samples for a business warehouse query |
8522151, | Feb 04 2009 | Microsoft Technology Licensing, LLC | Wizard for selecting visualization |
8612180, | Oct 21 2009 | SAP SE | Calibration of resource allocation during parallel processing |
8650150, | Mar 14 2011 | SAP SE | System and method of relating data and generating reports |
8682710, | Dec 02 2009 | International Business Machines Corporation | System and method to model and forecast technology adoption |
8775941, | Jul 20 2011 | GOOGLE LLC | System for monitoring and reporting deviations of real-time analytics data from expected analytics data |
9811938, | Mar 14 2013 | Business Objects Software Ltd | Methods, apparatus and system for analytics replay utilizing random sampling |
20030004973, | |||
20040032410, | |||
20040059743, | |||
20040221053, | |||
20060112123, | |||
20060282436, | |||
20100312762, | |||
20100321410, | |||
20120044251, | |||
20120105452, | |||
20120313957, | |||
20130076756, | |||
20130083034, | |||
20130120358, | |||
20130124483, | |||
20130346392, | |||
20140108234, | |||
20140156649, | |||
20140267304, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 05 2013 | HAN, QIANG | Business Objects Software Ltd | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 050312 | /0398 | |
Apr 05 2013 | POTIAGALOV, ALEXEI | Business Objects Software Ltd | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 050312 | /0398 | |
Apr 05 2013 | IVANOV, IVAILO | Business Objects Software Ltd | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 050312 | /0398 | |
Sep 22 2017 | Business Objects Software Ltd. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Sep 22 2017 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Apr 05 2023 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Oct 15 2022 | 4 years fee payment window open |
Apr 15 2023 | 6 months grace period start (w surcharge) |
Oct 15 2023 | patent expiry (for year 4) |
Oct 15 2025 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 15 2026 | 8 years fee payment window open |
Apr 15 2027 | 6 months grace period start (w surcharge) |
Oct 15 2027 | patent expiry (for year 8) |
Oct 15 2029 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 15 2030 | 12 years fee payment window open |
Apr 15 2031 | 6 months grace period start (w surcharge) |
Oct 15 2031 | patent expiry (for year 12) |
Oct 15 2033 | 2 years to revive unintentionally abandoned end. (for year 12) |