Interactive lineage analyzer for data assets
Through the lineage model and lineage object recording the dependence relationship between data objects, the problem of difficult to determine the impact range of data model changes on visual application is solved, and effective management and display of the impact range is achieved.
Patent Information
- Application Number
- CN202080042969.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-04-19
- Filing Date
- 2020-04-14
- Publication Date
- 2025-02-07
- Estimated Expiration
- 2040-04-14
AI Technical Summary
In data visualization, changes in data models can have a wide impact on multiple visualization applications, resulting in difficulty in determining the scope of impact.
By introducing lineage models and lineage objects, the dependencies of data objects are recorded, and the scope of impact analysis on the changes in data models is realized.
Effectively manage and demonstrate the dependencies of data objects, helping to quickly identify and cope with the impact of changes in data models on visual applications.
Smart Images

Figure CN113950674B_ABST
Abstract
Description
Technical Field
[0001] The present invention relates generally to data visualization and, more particularly, but not exclusively, to managing the display of objects included in data visualization. Background Art
[0002] Organizations are generating and collecting ever-increasing amounts of data. Such data may be associated with different parts of an organization, such as customer activity, manufacturing activity, customer service, server logs, and the like. For various reasons, such organizations may not be able to effectively utilize their large data collection. In some cases, the amount of data may make it difficult to effectively utilize the collected data to improve business practices. Therefore, in some cases, organizations may employ various applications or tools to generate visualizations based on some or all of their data. Employing visualizations to represent data enables organizations to improve their understanding of business operations, sales, customer information, employee information, key performance indicators, and the like. In some cases, complex visualizations may incorporate or otherwise depend on data from various sources in an organization, including different databases. In some cases, there may be many different visualizations that depend on these varied or different data sources. Therefore, even seemingly small changes made to a database or other data provider may have a wide-ranging impact on one or more visualizations or applications currently in use. In some cases, determining the impact of a data change (e.g., modifying a column of a database table) may be difficult because, in some cases, determining which end-user applications may be affected by the change may be difficult. Therefore, it is with respect to these considerations and the present invention that considerations have been made. BRIEF DESCRIPTION OF THE DRAWINGS
[0003] Non-limiting and non-exhaustive embodiments of the present 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 described innovation, reference will be made to the following detailed description read in conjunction with the accompanying drawings, in which:
[0004] Figure 1 illustrates a system environment in which various embodiments may be implemented;
[0005] Figure 2 An illustrative embodiment of a client computer is illustrated;
[0006] Figure 3 An illustrative embodiment of a network computer is illustrated;
[0007] Figure 4 illustrates a logical architecture of a system for interactive lineage analysis of data assets according to one or more of the various embodiments;
[0008] Figure 5 illustrates a logical representation that may be part of a system for interaction graph-based data visualization according to one or more of the various embodiments;
[0009] Figure 6 illustrates a logical diagram of a lineage object representing a data structure for managing lineage information according to one or more of the various embodiments;
[0010] Figure 7 illustrates a logical diagram of a portion of a system showing dependencies in a data model according to one or more of the various embodiments;
[0011] Fig. 8A illustrates a logical diagram of a portion of a system showing dependencies in a data model according to one or more of the various embodiments;
[0012] Figure 8B illustrates a logical diagram of a portion of a system showing dependencies in a data model according to one or more of the various embodiments;
[0013] Fig. 9 illustrates a logical diagram of a portion of a user interface of an interactive lineage analyzer for data assets according to one or more of the various embodiments;
[0014] Fig.10 illustrates an overview flow chart of the process of interactive lineage analysis of data assets according to one or more of the various embodiments;
[0015] Fig.11 A flow chart illustrating the process of interactive lineage analysis of data assets according to one or more of the various embodiments; and
[0016] Fig.12 A flow diagram is illustrated of a process for determining dependencies for interactive lineage analysis of data assets in accordance with one or more of the various embodiments. DETAILED DESCRIPTION
[0017] Various embodiments will be described more fully below with reference to the accompanying drawings, which form part of the present invention and, by way of illustration, illustrate specific exemplary embodiments in which the present invention may be practiced. However, the embodiments may be embodied in many different forms and should not be considered to be limited to the embodiments described herein; rather, these embodiments are provided to make this disclosure comprehensive and complete and to fully convey the scope of the embodiments to those skilled in the art. Various embodiments may be methods, systems, media, or devices, among others. Therefore, various embodiments may take the form of fully hardware embodiments, fully software embodiments, or embodiments combining software and hardware aspects. Therefore, the detailed description below is not to be taken in a limiting sense.
[0018] Throughout the specification and claims, unless the context clearly dictates otherwise, the following terms take the meanings explicitly associated herein. The phrase "in one embodiment" as used herein does not necessarily refer to the same embodiment, although it may refer to the same embodiment. In addition, the phrase "in another embodiment" as used herein does not necessarily refer to a different embodiment, although it may refer to a different embodiment. Therefore, as described below, various embodiments may be easily combined without departing from the scope or spirit of the present invention.
[0019] In addition, as used herein, unless the context clearly dictates otherwise, the term "or" is an inclusive "or" operator and is equivalent to the term "and / or". Unless the context clearly dictates otherwise, the term "based on" is not exclusive and allows for being based on additional factors that are not described. In addition, throughout the specification, the meanings of "a", "an", and "the" include plural references. The meaning of "in..." includes "in..." and "on...".
[0020] For the exemplary embodiments, the following terms are also used herein according to the corresponding meanings, unless the context clearly dictates otherwise.
[0021] As used herein, the term "engine" refers to logic embodied in hardware or software instructions, which may be written in a programming language such as C, C++, Objective-C, COBOL, Java, or the like. TM , Kotlin, PHP, Perl, JavaScript, Ruby, VBScript, Microsoft.NET TMLanguages such as C#, etc. The engine can be compiled into an executable program or written in an interpreted programming language. The software engine can be called from other engines or itself. The engine described herein refers to one or more logical modules that can be merged with other engines or applications, or can be divided into sub-engines. The engine can be stored in a non-temporary computer-readable medium or a computer storage device, and stored on and executed by one or more general-purpose computers, thereby creating a special-purpose computer configured to provide an engine. Similarly, in some embodiments, one or more parts of the engine can be hardware devices, ASICs, FPGAs, etc., which perform one or more actions with the support of the engine or as part of the engine.
[0022] As used herein, the term "data model" refers to one or more data structures that represent one or more entities associated with data collected or maintained by an organization. Data models are typically configured to model various operations or activities associated with an organization. In some cases, data models are configured to provide or facilitate various data-based actions, such as efficient storage, querying, indexing, searching, updating, etc. Typically, data models may be configured to provide features related to data manipulation or data management, rather than providing an easy way to understand the presentation or visualization of data.
[0023] As used herein, the term "data object" refers to one or more entities or data structures, including a data model. In some cases, a data object can be considered part of a data model. A data object can represent a class or type of item, such as a database, a data source, a table, a workbook, a visualization, a workflow, etc.
[0024] As used herein, the term "data object class" or "object class" refers to one or more entities or data structures that represent a class, kind, or type of data object.
[0025] As used herein, the term "display model" refers to one or more data structures that represent one or more representations of a data model that may be suitable for visualization for display on one or more hardware displays. A display model may define styling or user interface features that may be available to non-authoring users.
[0026] As used herein, the term "lineage model" refers to one or more data structures that represent a specialized model for representing lineage information for a corresponding data model.
[0027] As used herein, the term "lineage object" refers to one or more data structures, including a lineage model, which may correspond to a data object class represented by the lineage model.
[0028] As used herein, the term "display object" refers to one or more data structures, including a display model. In some cases, a display object may be considered part of a display model. A display object may represent an individual instance of an item or an entire class or category of items that may be displayed in a visualization. In some embodiments, display objects may be considered or referred to as views because they provide views of some portion of a data model.
[0029] As used herein, the term "anchor data object" refers to a data object that has been designated as a starting point for lineage analysis of a data model. An anchor data object may be a data object that is designed or selected from one or more data objects associated with a lineage object.
[0030] As used herein, the term "anchor attribute" refers to an attribute, field, or property of a data object that has been selected as a starting point for performing attribute-level data lineage analysis.
[0031] As used herein, the term "panel" refers to an area in a graphical user interface (GUI) that has a defined geometry (e.g., x, y, z order) in the GUI. A panel can be configured to display information to a user or to host one or more interactive controls. The geometry or style associated with a panel can be defined using configuration information (including dynamic rules). Likewise, in some cases, a user can be enabled to perform actions on one or more panels, such as moving, showing, hiding, resizing, reordering, etc.
[0032] 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., which may be provided from various sources (including configuration files, databases, user input, built-in defaults, etc., or a combination thereof).
[0033] The following briefly describes embodiments of the present invention in order to provide a basic understanding of some aspects of the present invention. The brief description is not intended to serve as a broad overview. It is not intended to identify key or important elements, or to delimit or otherwise narrow the scope. Its purpose is merely to present some concepts in a simplified form as a preface to a more detailed description that will be presented later.
[0034] Briefly, various embodiments relate to managing data using network computers. In one or more of the various embodiments, a data model may be provided, including a plurality of data objects that may be associated with one or more layers of the data model.
[0035] In one or more of the various embodiments, a lineage model including one or more lineage objects may be provided such that the one or more lineage objects may each be associated with one of the one or more data model layers.
[0036] In one or more of the various embodiments, a lineage object of the one or more lineage objects may be activated based on an association with a data model layer.
[0037] In one or more of the various embodiments, a first portion of the plurality of data objects may be determined based on a data model, an activated lineage object, etc., such that the first portion of the data objects and the activated lineage object may be associated with the same data model layer.
[0038] In one or more of the various embodiments, an anchor object from the first portion of the data object may be determined based on one or more characteristics of the first portion of the data object.
[0039] In one or more of the various embodiments, a search of the data model may be employed to provide dependency information based on the location of an anchor data object in the data model. In one or more of the various embodiments, providing the dependency information may include: determining one or more attributes that may be associated with the anchor data object; searching the data model based on the one or more attributes or one or more other attributes that may be associated with multiple data objects in the data model; providing the dependency information based on one or more associations or one or more attributes and one or more other attributes. In one or more of the various embodiments, providing the dependency information may include: generating query information based on the data model and the anchor data object; employing the query information to perform a query that may provide the dependency information; and the like.
[0040] In one or more of the various embodiments, a second portion of the plurality of data objects may be determined based on the dependency information. In one or more of the various embodiments, determining the second portion of the data objects may include modifying the second portion of the data objects based on one or more filters that may be displayed in a lineage panel.
[0041] In one or more of the various embodiments, in response to a modification of one or more of the multiple data objects, further actions may be performed, including: determining an activated lineage object based on the one or more modified data objects; determining an anchor data object based on the one or more modified data objects; determining one or more users associated with the modification based on dependency information so that each user can be associated with one or more data objects that may be affected by the modification; providing one or more notifications to each user based on each affected data object associated with the user; and the like.
[0042] In one or more of the various embodiments, one or more reports may be provided that include a listing of the second portion of data objects, dependency information, and the like.
[0043] In one or more of the various embodiments, a display engine can be instantiated to perform actions including: generating a graphical user interface (GUI) that can include a lineage panel and an object panel; displaying a lineage model and one or more lineage objects in the lineage panel; displaying a first portion of a data object in the object panel; and determining another activated lineage object based on one or more inputs to the lineage panel; automatically determining another portion of multiple data objects based on the other activated lineage object, wherein the another portion of the data object can be displayed in the object panel; and the like.
[0044] In one or more of the various embodiments, one or more data object classes may be provided based on the data model, so that the one or more data object classes include one or more of a database, a table, a data source, a workbook, a worksheet, etc. Moreover, in one or more of the various embodiments, each layer of the data model may be associated with one of the one or more data object classes, so that each data object may be associated with a data object class that may correspond to the data object class that can be associated with the layer.
[0045] Operating environment shown
[0046] Figure 1 The components of one embodiment of an environment in which embodiments of the present invention may be practiced are shown. Not all components may be required to practice the present invention, and changes may be made to the arrangement and type of components without departing from the spirit or scope of the present invention. As shown in the figure, Figure 1 The system 100 includes a local area network (LAN) / wide area network (WAN) - (network) 110, a wireless network 108, client computers 102 to 105, a visualization server computer 116, and the like.
[0047] At least one embodiment of client computers 102 to 105 is described below in conjunction with Figure 2 108 or 110. In one embodiment, at least some of the client computers 102 to 105 may operate on one or more wired or wireless networks (such as network 108 or 110). In general, client computers 102 to 105 may include virtually any computer that is capable of communicating over a network to send and receive information, perform various online activities, offline actions, and the like. In one embodiment, one or more of client computers 102 to 105 may be configured to operate within a business or other entity to perform various services for the business or other entity. For example, client computers 102 to 105 may be configured to operate as a web server, firewall, client application, media player, mobile phone, game console, desktop computer, and the like. However, client computers 102 to 105 are not limited to these services and, for example, in other embodiments, may also be used for end-user computing. It should be appreciated that more or less client computers (such as Figure 1 ) may be included in the system described herein, and thus the embodiments are not limited by the number or type of client computers employed.
[0048] Computers that can operate as client computers 102 may include computers that are typically connected using wired or wireless communication media, such as personal computers, multiprocessor systems, microprocessor-based or programmable electronic devices, network PCs, etc. In some embodiments, client computers 102 to 105 may include virtually any portable computer that can be connected to another computer and receive information, such as laptop computers 103, mobile computers 104, tablet computers 105, etc. However, portable computers are not limited to this, and may also include other portable computers, such as cellular phones, display pagers, radio frequency (RF) devices, infrared (IR) devices, personal digital assistants (PDAs), handheld computers, wearable computers, integrated devices that combine one or more of the above computers, and the like. Therefore, client computers 102 to 105 are generally wide-ranging in terms of capabilities and features. In addition, client computers 102 to 105 can access a variety of computing applications, including browsers or other web-based applications.
[0049] A web-enabled client computer may include a browser application configured to send requests and receive responses via the web. The browser application may be configured to receive and display graphics, text, multimedia, etc., using virtually any web-based language. In one embodiment, the browser application is enabled to display and send messages using JavaScript, Hypertext Markup Language (HTML), Extensible Markup Language (XML), JavaScript Object Notation (JSON), Cascading Style Sheets (CSS), etc., or a combination thereof. In one embodiment, a user of a client computer may use a browser application to perform various activities on the web (online). However, another application may also be used to perform various online activities.
[0050] The client computers 102 to 105 may also include at least one other client application configured to receive or send content between another computer. The client application may include the ability to send or receive content, etc. The client application may further provide information identifying itself, including type, ability, name, etc. In one embodiment, the client computers 102 to 105 may uniquely identify themselves by any of a variety of mechanisms, including an Internet Protocol (IP) address, a telephone number, a mobile identification number (MIN), an electronic serial number (ESN), a client certificate, or other device identifiers. This information may be provided in one or more network packets, etc., and sent between other client computers, the visualization server computer 116, or other computers.
[0051] The client computers 102-105 may be further configured to include a client application that enables an end user to log into an end user account that may be managed by another computer, such as the visualization server computer 116. In one non-limiting example, such an end user account may be configured to enable the end user to manage one or more online activities, including, in one non-limiting example, project management, software development, system administration, configuration management, search activities, social networking activities, browsing various websites, communicating with other users, etc. Likewise, the client computer may be configured to enable the user to display reports, interactive user interfaces, or results provided by the visualization server computer 116.
[0052] The wireless network 108 is configured to couple the client computers 103 to 105 and their components with the network 110. The wireless network 108 includes any of a variety of wireless sub-networks, which may further cover independent ad hoc networks, etc., to provide infrastructure-oriented connectivity for the client computers 103 to 105. Such sub-networks may include mesh networks, wireless LAN (WLAN) networks, cellular networks, etc. In one embodiment, the system may include more than one wireless network.
[0053] The wireless network 108 may further include an autonomous system of terminals, gateways, routers, etc. connected by radio links, etc. These connectors may be configured to move freely and randomly, and organize themselves arbitrarily, so that the topology of the wireless network 108 may change rapidly.
[0054] The wireless network 108 may further employ a variety of access technologies, including second generation (2G), third generation (3G), fourth generation (4G), fifth generation (5G) radio access of cellular systems, WLAN, wireless router (WR) networks, etc. Access technologies (such as 2G, 3G, 4G, 5G) and future access networks may enable mobile computers (such as client computers 103 to 105 with various degrees of mobility) to achieve wide area coverage. In a non-limiting example, the wireless network 108 may achieve radio connectivity through radio network access, such as global system for mobile communications (GSM), general packet radio service (GPRS), enhanced data GSM environment (EDGE), code division multiple access (CDMA), time division multiple access (TDMA), wideband code division multiple access (WCDMA), high speed downlink packet access (HSDPA), long term evolution (LTE), etc. In essence, the wireless network may include virtually any wireless communication mechanism by which information may travel between client computers 103 to 105 and another computer, network, cloud-based network, cloud instance, etc.
[0055] The network 110 is configured to couple the network computer with other computers (including the visualization server computer 116, the client computer 102, and the client computers 103 to 105) through the wireless network 108, etc. The network 110 is enabled to transfer information from one electronic device to another electronic device using any form of computer-readable media. Similarly, the network 110 may include a direct connection to the Internet other than a local area network (LAN), a wide area network (WAN), such as through a universal serial bus (USB) port, an Ethernet port, other forms of computer-readable media, or any combination thereof. On a group of interconnected LANs (including LANs based on different architectures and protocols), a router acts as a link between LANs, enabling messages to be sent from one LAN to another. In addition, the communication links in the LANs typically include twisted pairs or coaxial cables, while the communication links between networks can utilize analog telephone lines, fully dedicated or partially dedicated digital lines (including T1, T2, T3, and T4), or other carrier mechanisms, including, for example, electronic carriers, integrated services digital networks (ISDN), digital subscriber lines (DSL), wireless links (including satellite links), or other communication links known to those skilled in the art. In addition, the communication link can further employ any of a variety of digital signaling techniques, including, but not limited to, for example, DS-0, DS-1, DS-2, DS-3, DS-4, OC-3, OC-12, OC-48, etc. In addition, remote computers and other related electronic devices can be remotely connected to a LAN or WAN via a modem and a temporary telephone link. In one embodiment, the network 110 can be configured to transmit Internet Protocol (IP) information.
[0056] Additionally, communication media typically embodies computer readable instructions, data structures, program modules or other transmission media, and includes any non-transitory transfer media or transient transfer media of information. For example, communication media includes 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.
[0057] Likewise, one embodiment of the visualization server computer 116 is described below in conjunction with Figure 3 A more detailed description is given below. Figure 1The visualization server computer 116 is illustrated as a single computer, but the innovations or embodiments are not limited to this. For example, one or more functions of the visualization server computer, etc. can be distributed across one or more different network computers. In addition, in one or more embodiments, the visualization server computer 116 can be implemented using multiple network computers. Further, in one or more of the various embodiments, the visualization server computer 116, etc. can be implemented using one or more cloud instances in one or more cloud networks. Therefore, these innovations and embodiments should not be construed as limited to a single environment, and other configurations and other architectures are also contemplated.
[0058] Illustrative Client Computer
[0059] Figure 2 One embodiment of a client computer 200 is shown. The client computer 200 may include many more or fewer components than those shown. For example, the client computer 200 may represent Figure 1 One or more embodiments of a mobile computer or client computer are shown.
[0060] The client computer 200 may include a processor 202 that communicates with a 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 tactile interface 264, a global positioning system (GPS) receiver 258, an open air gesture interface 260, a temperature interface 262, (multiple) cameras 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. Moreover, in one embodiment, although not shown, a gyroscope may be used in the client computer 200 to measure or maintain the orientation of the client computer 200.
[0061] Power supply 230 can provide power to client computer 200. Rechargeable or non-rechargeable batteries can be used to provide power. Power can also be provided by an external power source, such as an AC adapter or a power base that replenishes or charges the battery.
[0062] Network interface 232 includes circuitry for coupling client computer 200 to one or more networks and is configured for use with one or more communications protocols and technologies, including but not limited to protocols and technologies implementing any portion of the OSI model for 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 any of a variety of other wireless communications protocols. Network interface 232 is sometimes referred to as a transceiver, transceiver device, or network interface card (NIC).
[0063] The audio interface 256 can be configured to generate and receive audio signals, such as the sound of human speech. For example, the audio interface 256 can be coupled to a speaker and a microphone (not shown) to enable remote communication with others or to generate audio confirmation for some actions. The microphone in the audio interface 256 can also be used for input to the client computer 200 or control of the client computer 200, for example, using voice recognition, detecting touch based on sound, and the like.
[0064] 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 transmissive display capable of being used with a computer. The display 250 may also include a touch interface 244 that is configured to receive input from an object (such as a stylus) or a digital input from a human hand, and may sense touch or gestures using resistance, capacitance, surface acoustic wave (SAW), infrared, radar, or other technologies.
[0065] Projector 246 may be a remote handheld projector or an integrated projector capable of projecting an image onto a remote wall or any other reflective object, such as a remote screen.
[0066] The video interface 242 may be configured to capture video images, such as still photos, video clips, infrared video, etc. For example, the video interface 242 may be coupled to a digital video camera, a web camera, etc. The video interface 242 may include a lens, an image sensor, and other electronics. 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.
[0067] The keypad 252 may include any input device configured to receive input from a user. For example, the keypad 252 may include a button numeric dial or a keyboard. The keypad 252 may also include command buttons associated with selecting and sending images.
[0068] Illuminator 254 can provide status indication or provide light. Illuminator 254 can remain active for a specific period of time or in response to an event message. For example, when illuminator 254 is active, it can backlight the buttons on keypad 252 and remain when the client computer is powered. Similarly, when performing a specific action (such as dialing another client computer), illuminator 254 can backlight these buttons in various modes. Illuminator 254 can also cause a light source located in a transparent or translucent housing of the client computer to illuminate in response to an action.
[0069] 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 / encrypted information (such as keys, digital certificates, passwords, passphrases, two-factor authentication information, etc.). 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 stand-alone computer, and in other cases, the HSM 268 may be provided as a hardware card that may be added to the client computer.
[0070] 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 and network computers). Peripheral devices may include audio headsets, virtual reality headsets, display 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. TM wait.
[0071] The input / output interface 238 may also include one or more sensors for determining geographic location information (e.g., GPS), monitoring power conditions (e.g., voltage sensor, current sensor, frequency sensor, etc.), monitoring weather (e.g., thermostat, barometer, anemometer, humidity detector, precipitation range, etc.), etc. The sensor may be one or more hardware sensors that collect or measure data external to the client computer 200.
[0072] The tactile interface 264 can be configured to provide tactile feedback to the user of the client computer. For example, the tactile interface 264 can be used to vibrate the client computer 200 in a particular manner when calling another user of the computer. The temperature interface 262 can be used to provide a temperature measurement input or a temperature change output to the client computer 200. The open air gesture interface 260 can sense the body gestures of the user of the client computer 200, such as by using a single or stereo video camera, radar, gyroscopic sensor, etc. within the computer that is held or worn by the user. The camera 240 can be used to track the body eye movements of the user of the client computer 200.
[0073] The GPS transceiver 258 can determine the physical coordinates of the client computer 200 on the surface of the earth, which typically outputs the location as latitude and longitude values. The GPS transceiver 258 can also use other geolocation 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., to further determine the physical location of the client computer 200 on the surface of the earth. 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 can provide other information that can be used to determine the physical location of the client computer through other components, including, for example, a media access control (MAC) address, an IP address, etc.
[0074] In at least one of the various embodiments, applications, such as operating system 206, client display engine 222, other client applications 224, web browser 226, etc., can be configured to use geolocation information to select one or more localization features, such as time zone, language, currency, calendar formatting, etc. The localization features can be used in documents, visualizations, display objects, display models, action objects, user interfaces, reports, and internal processes or databases. In at least one of the various embodiments, the geolocation information used to select the localization information can be provided by GPS 258. Likewise, in some embodiments, the geolocation information can include information provided by a network (such as wireless network 108 or network 111) using one or more geolocation protocols.
[0075] Human interface components may be peripheral devices that are physically separate from the client computer 200 and allow for remote input or output to the client computer 200. For example, information routed through a human interface component (such as display 250 or keyboard 252) as described herein may also be routed through network interface 232 to an appropriate human interface component located remotely. Examples of human interface peripheral components that may be remote include, but are not limited to, audio devices, pointing devices, keypads, displays, cameras, projectors, and the like. These peripheral components may be routed through a Pico network (such as Bluetooth TM 、Zigbee TM A non-limiting example of a client computer having such a peripheral human-machine interface component is a wearable computer, which may include a remote micro-projector and one or more cameras that communicate remotely with a separately located client computer to sense user gestures to portions of an image projected by the micro-projector onto a reflective surface, such as a wall or the user's face.
[0076] The client computer may include a web browser application 226 configured to receive and send web pages, web-based messages, graphics, text, multimedia, etc. The browser application of the client computer may employ virtually any programming language, including wireless application protocol messages (WAP), etc. In one or more embodiments, the browser application may employ Handheld Device Markup Language (HDML), Wireless Markup Language (WML), WMLScript, JavaScript, Standard Generalized Markup Language (SGML), Hypertext Markup Language (HTML), Extensible Markup Language (XML), HTML5, etc.
[0077] Memory 204 may include RAM, ROM, or other types of memory. Memory 204 illustrates 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 BIOS 208 for controlling low-level operations of client computer 200. Memory may also store operating system 206 for controlling the operation of client computer 200. It will be appreciated that this component may include a general-purpose operating system (such as some version of UNIX or LINUX™) or a specialized client computer communication operating system, such as Windows Phone 8. TM 、Android TM Or IOS operating system. The operating system may include or interface with a Java virtual machine module that enables control of hardware components or operating system operations through Java applications.
[0078] The memory 204 may further include one or more data storage devices 210, which may be used by the client computer 200 to store, among other things, applications 220 or other data. For example, the data storage device 210 may also be used to store information describing various capabilities of the client computer 200. The information may then be provided to another device or computer based on any of a variety of methods, including being sent as part of a header during a communication, being sent upon request, and the like. The data storage device 210 may also be used to store social network information, including address books, friend lists, aliases, user profile information, and the like. The data storage device 210 may further include program code, data, algorithms, and the like for a processor, such as the processor 202, to execute and perform actions. In one embodiment, at least some of the data storage device 201 may also be stored on another component of the client computer 200, including, but not limited to, a non-transitory processor-readable removable storage device 236, a processor-readable fixed storage device 234, or even external to the client computer.
[0079] The applications 220 may include computer-executable instructions that, when executed by the client computer 200, transmit, receive, or otherwise process instructions and data. For example, the applications 220 may include a client display engine 222, other client applications 224, a web browser 226, etc. The client computer may be configured to exchange communications with the visualization server computer, such as queries, searches, messages, notification messages, event messages, alerts, performance metrics, log data, API calls, etc., or combinations thereof.
[0080] 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, and the like.
[0081] Additionally, in one or more embodiments (not shown in the figure), the client computer 200 may include an embedded logic hardware device instead of a CPU, such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a programmable array logic (PAL), etc., or a combination thereof. The embedded logic hardware device may directly execute its embedded logic to perform an action. Likewise, in one or more embodiments (not shown in the figure), the client computer 200 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 an action, and access their own internal memory and their own external input and output interfaces (e.g., hardware pins or wireless transceivers) to perform an action, such as a system on a chip (SOC), etc.
[0082] Illustrative Network Computer
[0083] Figure 3 1 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 Figure 3 However, the components shown are sufficient to disclose illustrative embodiments for practicing these innovations. For example, network computer 300 may represent Figure 1 An embodiment of one or more visualization server computers 116.
[0084] A network computer, such as network computer 300, may include a processor 302 that may communicate with a memory 304 via a bus 328. In some embodiments, processor 302 may be comprised 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 a dedicated processor that is designed to perform one or more dedicated 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. Power supply 330 provides power to network computer 300.
[0085] The network interface 332 includes circuitry for coupling the network computer 300 to one or more networks and is configured to be used with one or more communication protocols and technologies, including but not limited to protocols and technologies implementing any portion of the Open Systems Interconnection Model (OSI Model), Global System for Mobile Communications (GSM), 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 Message Service (MMS), General Packet Radio Service (GPRS), WAP, Ultra-Wideband (UWB), IEEE 802.16 Worldwide Interoperability for Microwave Access (WiMax), Session Initiation Protocol / Real-time Transport Protocol (SIP / RTP), or any of a variety of other wired and wireless communication protocols. The network interface 332 is sometimes referred to as a transceiver, transceiver device, or network interface card (NIC). The network computer 300 can optionally communicate with a base station (not shown) or directly with another computer.
[0086] The audio interface 356 is configured to generate and receive audio signals, such as the sound of human speech. For example, the audio interface 356 can be coupled to a speaker and a microphone (not shown) to enable remote communication with others or to generate audio confirmation for some actions. The microphone in the audio interface 356 can also be used for input to the network computer 300 or to control the network computer 300, for example, using speech recognition.
[0087] 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 transmissive display capable of being used with a computer. In some embodiments, display 350 may be a handheld projector or a micro-projector capable of projecting an image onto a wall or other object.
[0088] The network computer 300 may also include an input / output interface 338 for communicating with Figure 3 The input / output interface 338 may utilize one or more wired or wireless communication technologies, such as USB. TM 、Firewire TM , WiFi, WiMax, Thunderbolt TM , infrared, Bluetooth TM 、Zigbee TM , serial port, parallel port, etc.
[0089] Likewise, the input / output interface 338 may also include one or more sensors for determining geolocation information (e.g., GPS), monitoring power conditions (e.g., voltage sensors, current sensors, frequency sensors, etc.), monitoring weather (e.g., thermostats, barometers, anemometers, humidity detectors, precipitation ranges, etc.), etc. The sensors may be one or more hardware sensors that collect or measure data external to the network computer 300. The human-machine interface components may be physically separated from the network computer 300, allowing remote input or output to the network computer 300. For example, information routed through a human-machine interface component (such as a display 350 or keyboard 352) as described herein may also be routed through the network interface 332 to an appropriate human-machine interface component located elsewhere on the network. The human-machine interface components include any component that allows a computer to obtain input from a human user of the computer or send output to the human user. Thus, a pointing device, such as a mouse, stylus, trackball, etc., may communicate through the pointing device interface 358 to receive user input.
[0090] The GPS transceiver 340 can determine the physical coordinates of the network computer 300 on the surface of the earth, which typically outputs the location as latitude and longitude values. The GPS transceiver 340 can also use other geolocation 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., to further determine the physical location of the network computer 300 on the surface of the earth. 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 can provide other information that can be used to determine the physical location of the client computer through other components, including, for example, a media access control (MAC) address, an IP address, etc.
[0091] In at least one of the various embodiments, an application, such as operating system 306, data management engine 322, display engine 324, lineage engine 326, web service 329, etc., can be configured to use geolocation information to select one or more localization features, such as time zone, language, currency, currency formatting, calendar formatting, etc. The localization features can be used in documents, file systems, user interfaces, reports, display objects, display modules, visualizations, and internal processes or databases. In at least one of the various embodiments, the geolocation information used to select the localization information can be provided by GPS 340. Likewise, in some embodiments, the geolocation information can include information provided by a network (such as wireless network 108 or network 111) using one or more geolocation protocols.
[0092] Memory 304 may include random access memory (RAM), read only memory (ROM), or other types of memory. Memory 304 illustrates 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, which is used to control the low-level operation of network computer 300. Memory also stores an operating system 306, which is used to control the operation of network computer 300. It will be appreciated that this component may include a general-purpose operating system (such as some version of UNIX or LINUX™) or a special-purpose operating system, such as Microsoft Corporation's . operating system or Apple's Operating system. The operating system may include or interface with one or more virtual machine modules (such as a Java virtual machine module) that enable control of hardware components or operating system operations by Java applications. Likewise, other runtime environments may be included.
[0093] Memory 304 may further include one or more data storage devices 310, which may be used by network computer 300 to store, among other things, applications 320 or other data. For example, data storage device 310 may also be used to store information describing various capabilities of network computer 300. The information may then be provided to another device or computer based on any of a variety of methods, including being sent as part of a header during a communication, being sent upon request, and the like. Data storage device 310 may also be used to store social network information, including address books, friend lists, aliases, user profile information, and the like. Data storage device 310 may further include program code, data, algorithms, and the like for a processor, such as processor 302, to execute and perform actions, such as those described below. In one embodiment, at least some of data storage device 310 may also be stored on another component of network computer 300, including but not limited to non-transitory media within processor-readable removable storage device 336, processor-readable fixed storage device 334, or any other computer-readable storage device in network computer 300, or may even be stored external to network computer 300. For example, data store 310 may include data models 314, display models 316, diagram models 318, source data 319, and the like. Data models 314 may store files, documents, versions, properties, metadata, data structures, and the like that represent one or more portions of one or more data models. Display models 316 may store display models. Lineage models 318 may represent storage for storing lineage models. Source data 319 may represent storage for storing databases or other data sources that contribute data that is located below data models, lineage models, display models, and the like.
[0094] Applications 320 may include computer executable instructions that, when executed by network computer 300, transmit, receive, or otherwise process messages (e.g., SMS, multimedia messaging service (MMS), instant messaging (IM), email, or other messages), audio, video, and enable remote communication with another user of another mobile computer. 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, and the like. Applications 320 may include data management engines 322, display engines 324, lineage engines 326, web services 329, and the like, which may be configured to perform actions for the embodiments described below. In one or more of the various embodiments, one or more applications may be implemented as a module or component of another application. Further, in one or more of the various embodiments, an application may be implemented as an operating system extension, module, plug-in, and the like.
[0095] In addition, in one or more of the various embodiments, the data management engine 322, display engine 324, lineage engine 326, web services 329, etc. can be operational in a cloud-based computing environment. In one or more of the various embodiments, these applications and applications including the management platform can be executed in virtual machines or virtual servers that are managed in the cloud-based computing environment. In one or more of the various embodiments, in this context, applications can flow from one physical network computer in the cloud-based environment to another physical network computer, depending on performance and scalability considerations that are automatically managed by the cloud computing environment. Likewise, in one or more of the various embodiments, virtual machines or virtual servers dedicated to the data management engine 322, display engine 324, web services 329, etc. can be automatically provisioned and shut down.
[0096] Likewise, in one or more of the various embodiments, the data management engine 322, display engine 324, lineage engine 326, web services 329, etc. may be located in virtual servers that are running in a cloud-based computing environment rather than being tied to one or more specific physical network computers.
[0097] 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 / encrypted information (such as keys, digital certificates, passwords, passphrases, two-factor authentication information, etc.). 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 stand-alone network computer, and in other cases, the HSM 360 may be provided as a hardware card that may be installed in the network computer.
[0098] Additionally, in one or more embodiments (not shown in the figure), the network computer 300 may include an embedded logic hardware device instead of a CPU, such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a programmable array logic (PAL), etc., or a combination thereof. The embedded logic hardware device may directly execute its embedded logic to perform an action. Similarly, in one or more embodiments (not shown in the figure), the network computer 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 an action, and access their own internal memory and their own external input and output interfaces (e.g., hardware pins or wireless transceivers) to perform an action, such as a system on a chip (SOC), etc.
[0099] Illustrative Logical System Architecture
[0100] Figure 4 The logical architecture of a system 400 for interactive lineage analysis of data assets according to one or more of the various embodiments is illustrated. In one or more of the various embodiments, the system 400 may include various components, such as a data model 402, which may be composed of various data objects ranging from one or more database objects to one or more visualizations. In this example, the data model 402 includes a database object 404, a database object 406, a table object 408, a table object 410, a table object 412, a workflow object 414, a data source object 416, a data source object 418, a workbook object 420, a worksheet object 422, and a worksheet object 424.
[0101] In one or more of the various embodiments, a visualization server computer, such as visualization server computer 116, can be configured to employ a data model, such as data model 402, to represent information that can be used to generate a visualization. Likewise, in some embodiments, the data model can be used to manage other participants in the visualization system, including users, authors, and the like.
[0102] In this example, data model 402 may have one or more root-level data objects, such as data object 404 and data object 406. Data object 404 and data object 406 represent databases that may be sources of information from which the data model is derived. For example, data object 404 may represent a SQL RDBMS associated with one part of an organization, while data object 406 may represent an API gateway to another information provider or another database.
[0103] In one or more of the various embodiments, data objects 408, 410, 412, etc. represent tables or table-like objects that may be provided by one or more databases. At this level of the data model, data objects may be viewed as wrapping or otherwise closely modeling entities provided from a database. Thus, in some embodiments, the properties or attributes of table or database objects correspond to their native representations in terms of attribute names, data types, table names, column names, etc. For example, a data administrator may be enabled to "import" a database or table into the data model so that the imported object retains some or all of the features or attributes available in native form.
[0104] In one or more of the various embodiments, before the imported table objects can be used for visualization, the data administrator may have to perform or execute one or more actions to prepare the information for use by the visualization or visualization author. In this example, extract-transform-load (ETL) object 414 represents an ETL process that performs some processing on the information in table object 410 and table object 412 before it can be used for visualization.
[0105] In one or more of the various embodiments, a data source object, such as data source 416 or data source 418, represents a data object that can be incorporated into a visualization or other display model by a visualization author. In some embodiments, a data source object can provide a data administrator with controls to manage or otherwise shape information from a database (e.g., database 404 or database 406) that may be available to a visualization or visualization author. For example, one or more tables in database 404 may include sensitive information that an organization wishes to exclude from a visualization. Thus, in some embodiments, by selecting mapping properties from table objects to data source objects, a data administrator can control how data is exposed from an underlying database. In some embodiments, a data administrator can be enabled to select specific columns or properties from a table object to be included in a data source. Likewise, in some embodiments, property names (e.g., column names) in a table object can be mapped to different names in a data source. For example, a table column named customer_identifier in a table object can be mapped to a property named 'Account Number' in a data source. Further, in some embodiments, other transformations of the mapping can be performed, such as data type conversion, aggregation, filtering, combination, and the like. In some embodiments, extensive or complex transformations may be encapsulated in an ETL object or the like, while simpler or more common transformations may be enabled without the use of a separate ETL object.
[0106] In one or more of the various embodiments, edge 448 represents a mapping from a table object to a data source. In this example, edge 448 may represent one or more data structures that map one or more attributes (e.g., columns) of table object 408 to data source 416. Thus, in some embodiments, edge 448 provides or is associated with one or more mapping rules or instructions that define what information from table object 408 is available in data source 416 and what the information from table object 408 may look like to a visualization author.
[0107] In one or more of the various embodiments, workbook object 420 represents a data object that can be associated with one or more user-level data objects, such as worksheet object 422 or worksheet object 424. In some embodiments, a visualization author can be enabled to design a workbook, such as workbook object 420, based on information provided by one or more data sources, such as data source 416 or data source 418. In some embodiments, a visualization author can design a workbook that includes one or more worksheets (e.g., worksheet object 422 or worksheet object 424). In some embodiments, a worksheet object can include one or more visualizations, etc.
[0108] In one or more of the various embodiments, worksheet object 422 or worksheet object 424 may represent some or all of the information that may be provided to a visualization engine, etc., which generates one or more interactive visualization applications or reports that a user may employ. In this example, worksheet object 422 or worksheet object 424 may be viewed as including or referencing one or more of data, metadata, data structures, etc., which may be used to render one or more visualizations of information that may be provided by one or more databases. In some embodiments, a worksheet may be configured to include one or more display models, style information, text descriptions, narrative information, styled graphics, links to other worksheets, etc.
[0109] Thus, in some embodiments, a user, such as user 426 or user 428, may be enabled to access a worksheet. The content or visualization in a worksheet may depend on its design or the information on which it is based (e.g., information from database 404 or database 406). In general, a worksheet or included visualization may depend on one or more fields, nodes, columns, etc. from one or more databases. Likewise, in some embodiments, dependencies that may be associated with a database may be propagated through other data objects (such as tables, data sources, workbooks, etc.). In some cases, other data objects inserted between a worksheet and its underlying database may introduce additional dependencies that may be propagated to the worksheet or visualization.
[0110] In some embodiments, upstream changes to one or more data objects may affect one or more downstream worksheets or visualizations. In some cases, upstream changes may break worksheets or visualizations so that a user or author can easily see the changes to the upstream data objects based on an error message associated with the broken worksheet or visualization. For example, if a visualization depends on an upstream field or property, deleting or renaming that property may result in an error identifying the missing property.
[0111] However, in some embodiments, some or many of the upstream changes may have effects that may not be immediately apparent to the user. For example, in some embodiments, an upstream change may modify the meaning or semantics of a property so that even though the meaning of the information has changed, it still provides information that can be consumed by a visualization without generating a system error. In this example, the user may not be aware that upstream changes have occurred, even though a visualization of those upstream changes no longer produces correct results.
[0112] Similarly, in some embodiments, a data administrator who manages a database or other data object for an organization may not be able to easily determine the potential downstream impact that a change to a data object or data model may cause. For example, a data administrator may recommend one or more changes to a database, however, they may have difficulty estimating, verifying, or confirming the potential impact that these changes may have on downstream users.
[0113] Thus, in one or more of the various embodiments, a lineage engine, such as lineage engine 326, may be configured to generate and maintain one or more lineage models, such as lineage model 432 that provides lineage information that may be associated with data model 402. In one or more of the various embodiments, a lineage model may be configured to include one or more lineage objects, such as lineage object 434, lineage object 436, lineage object 438, lineage object 440, lineage object 442, lineage object 444, lineage object 446, and the like.
[0114] In one or more of the various embodiments, a lineage object may represent a type of data object, which may be part of the same data model layer. In some embodiments, members of a layer of a data model may include data objects, which may have the same or similar characteristics or purposes. For example, lineage object 434 represents a data object that may be considered a database, such as data object 404 and data object 406. Moreover, for example: lineage object 436 may represent a data object representing a table, such as data object 408, data object 410, data object 412, etc.; lineage object 438 may represent a data object representing an ETL process, such as data object 414, etc.; lineage object 440 may represent a data object representing a data source, such as data object 416, data object 418, etc.; lineage object 442 may represent a data object representing a workbook, such as data object 420, etc.; lineage object 444 may represent a data object representing a worksheet, such as worksheet data object 422, worksheet data object 424, etc. Likewise, in certain objects, a lineage model may be configured to include lineage objects representing one or more users that may be associated with a worksheet or visualization, such as user 426 , user 428 , and so on.
[0115] In one or more of the various embodiments, the lineage model can be configured to represent more or fewer data object classes. For example, in some embodiments, if the lineage engine is limited or otherwise unable to identify which users may be associated with a worksheet, the lineage model can omit lineage objects representing users, such as lineage object 446.
[0116] In one or more of the various embodiments, the lineage engine may be configured to automatically survey the data model 402 to determine its lineage objects based on data object classes or data model layers in the data model. In some embodiments, one or more data objects or data object classes in the data model may be excluded from the lineage engine or lineage model for various reasons (such as security considerations, etc.). Thus, in some embodiments, the lineage engine may be configured to employ one or more rules, filters, or conditions provided via configuration information to determine which lineage objects to include in the lineage model.
[0117] Figure 5 5. A logical representation of a portion of a system 500 for interactive graph-based data visualization that may be in accordance with one or more of the various embodiments is illustrated. In this example, for some embodiments, data model 502 may be considered similar to data model 402 described above. In this example, data object 506 represents a data object that a data administrator may consider modifying. Thus, in this example, changes to data object 506 may affect various downstream data objects, such as data object 508, data object 510, data object 512, data object 514, etc. Likewise, in this example, user 516 or user 518 may be a user that depends on or owns data object 512 or data object 514.
[0118] Likewise, in this example, for some embodiments, lineage model 520 may be a lineage model generated by a lineage engine based on data model 502. Thus, in this example, for some embodiments, lineage object 522 may represent one of the lineage objects included in lineage model 520.
[0119] Thus, in some embodiments, if a lineage object in a lineage model is activated, the lineage engine may be configured to determine data objects in its corresponding data model (eg, data model 502) that may be dependent on data objects associated with the activated lineage object.
[0120] In one or more of the various embodiments, if a lineage object can be activated, the lineage engine can be configured to determine data objects in the data model that can be included in the data model layer corresponding to the activated lineage object. In this example, the activated lineage object can be lineage object 522. In this example, lineage object 522 can be considered to correspond to the table layer in data model 502. Therefore, in this example, the lineage engine can determine that some or all data objects in data model 502 can be associated with the table layer.
[0121] In some embodiments, if the data objects associated with the lineage object can be determined, the lineage engine can determine one or more anchor data objects based on one or more rules that can be provided through configuration information, user input, etc. For example, in some embodiments, the configuration information can include rules that automatically select one or more data objects (e.g., the last data object accessed, the first data object in a sorted list, etc.). Similarly, in some embodiments, the lineage engine can be configured to determine one or more anchor data objects based on user input. For example, a data administrator can select data object 506 because it may be associated with one or more pending modifications.
[0122] In one or more of the various embodiments, if an anchor data object has been determined, the lineage engine may be configured to initiate a search of the data model to determine lineage information including dependency information based on the anchor data object.
[0123] In one or more of the various embodiments, the lineage engine can be configured to determine various information about data objects that can be associated with one or more lineage objects. In some embodiments, the lineage engine can be configured to determine the number of data objects that can be associated with a data model layer that can be associated with each lineage object. For example, in some embodiments, the lineage engine can associate one or more lineage objects with the number of data objects associated with a given lineage object. In other embodiments, the lineage object can include other information, such as identifying one or more restricted data objects in the data model. For example, if the data model 502 includes a restricted table data object (not shown), the lineage object 522 can be configured to have properties that can store such information.
[0124] In one or more of the various embodiments, the lineage engine can be configured to execute one or more filters or other rules to exclude one or more data objects from the aggregated data model layer information. For example, if the data model 502 includes one or more tabular data objects (not shown) that are configured to be inaccessible to a data administrator, the one or more tabular data objects can be excluded from or otherwise distinguished from the data objects that the data administrator can view or modify.
[0125] In one or more of the various embodiments, the lineage engine may be configured to generate a lineage model for investigating dependencies of data objects based on activated lineage objects. Further, in some embodiments, the lineage engine may be configured to further refine the dependency investigation based on one or more data objects, which may be designated as anchor data objects. For example, if data object 506 is an anchor data object, lineage object 522 may be considered to be activated because data object 506 is in the data model layer (e.g., data object class table) corresponding to lineage object 522. Therefore, in some embodiments, the lineage engine may be configured to perform a search of the data model that tracks dependencies associated with the anchor data object based on the location of the anchor data object in the data model, rather than searching the entire data model.
[0126] In this example, if data object 506 is an anchor data object, the lineage engine can determine a dependency path associated with data object 506. Here, this path in data model 502 is illustrated using bold / bold lines and includes data object 506, data object 508, data object 510, data object 512, data object 514, user 516, and user 518. Also, in this example, the appearance of lineage object 522 can be modified to indicate that it represents an active data model layer.
[0127] Figure 6 A logical diagram of a lineage object 600 representing a data structure for managing lineage information is illustrated in accordance with one or more of various embodiments. In some embodiments, a lineage object may be configured to include various information that may be associated with data objects that may be associated with the lineage object. In some embodiments, a lineage engine may be configured to determine specific information to be collected and included in a lineage object based on configuration information, etc.
[0128] In one or more of the various embodiments, a lineage object may include various properties that may be used to store information or references to information associated with one or more data objects associated with a data model layer. In this example, for some embodiments, lineage object 600 includes properties such as identifier property 602, layer property 604, object count property 606, exclude object count property 608, filter property 610, etc.
[0129] In some embodiments, a layer property, such as property 604, may include an identifier (e.g., an ID, a reference number, a pointer, a label, a tag, etc.) that indicates which layer of the data model the lineage object represents. In this example, property 604 has a value of "table," which indicates that it may be associated with the table layer of the data model. Similarly, for example, if property 604 had a value of "data source," it may indicate that the lineage object may be associated with the "data source" layer of the data model. Alternatively, in some embodiments, a data object class property (not shown) may be included instead of or in addition to layer property 604.
[0130] In one or more of the various embodiments, a lineage object may be set to one or more properties with aggregate information values, such as, counts, averages, sums, and the like. In this example, property 606 may store a value representing the number of data objects that may be associated with the lineage object. Similarly, in this example, property 608 may store a value representing the number of data objects in the "table" layer that have been excluded from the object counts in property 606. In some embodiments, one or more data objects may be excluded for various reasons, including: data objects that may be hidden or otherwise inaccessible to a data administrator; data objects that may be excluded based on a filter or other configuration; and the like. Also, in this example, property 610 may store filter information or a reference to the filter information that the linear engine may apply.
[0131] Figure 7 A logical diagram of a portion of a system 700 is illustrated, showing dependencies in a data model, in accordance with one or more of the various embodiments. In this example, the system 700 includes a data object 702, a data object 704, a data object 706, a data object 708, etc. Also, in this example, the system 700 includes a portion of a lineage model, which includes a lineage object 710, a lineage object 712, a lineage object 714, a lineage object 716, etc.
[0132] As described above, in one or more of the various embodiments, data objects in a data model may depend on other data objects in the same data model. In this example, data object 704, data object 706, and data object 708 depend on data object 702. Thus, in this example, data object 708 depends on data object 706, etc. Note that while all of the data objects in this example are part of the same dependency tree, which has data object 702 as its root, there may be other data objects in the same data model that have different or separate dependency graphs.
[0133] In one or more of the various embodiments, a data object in a data model may depend on another data object because they depend on one or more properties of the other data object. Figure 7 , lines connecting columns in a data object to other columns in the data object represent dependencies between data objects at the attribute level. Thus, in this example, data object 702 has five columns, which can be considered five attributes. In this example, the line connecting data object 702 to data object 704 represents that data object 704 depends on four attributes of data object 702. Similarly, in this example, data object 706 directly depends on three attributes of data object 704 and indirectly depends on three attributes of data object 702. Likewise, similarly, in this example, data object 708 directly depends on one attribute from data object 706 and indirectly depends on one attribute of data object 706, data object 704, and data object 702. Thus, in this example, all data objects depend on one or more of their parent objects, however, dependencies between data objects may be based on fewer than all attributes. For example, line 718 represents that data object 708 depends on one field or attribute of data object 706.
[0134] In some embodiments, dependencies between attributes or data objects generally may depend on one or more functions, filters, transformations, etc., which may be applied to attribute values when they are passed to descendant data objects. For example, a tabular data object may include a timestamp attribute stored as a Unix epoch timestamp. However, in this example, a dependent data source may have an attribute labeled Date that expects a traditional date representation, rather than a Unix epoch timestamp. Therefore, in this example, the Date attribute of the dependent data source may be associated with a transformation action that converts the Unix epoch timestamp value provided by the parent table into a traditional date value that meets the requirements of the data source.
[0135] Similarly, in this example: lineage model 710 can be considered to correspond to a data model layer "table" (not shown) that includes data object 702; lineage model 712 can be considered to correspond to a data model layer "data source" (not shown) that includes data object 704; lineage model 714 can be considered to correspond to a data model layer "workbook" (not shown) that includes data object 706; and lineage model 716 can be considered to correspond to a data model layer "worksheet" (not shown) that includes data object 708.
[0136] Fig. 8AA logical diagram of a portion of a system 800 is illustrated, showing dependencies in a data model, according to one or more of various embodiments. In this example, the system 800 may be considered similar to the above-described system 700. In this example, for some embodiments, the system 800 includes a data object 802, a data object 804, a data object 806, and a data object 808.
[0137] In one or more of the various embodiments, a lineage object in a lineage model can be associated with an anchor data object. Thus, in some embodiments, a lineage engine can be configured to determine dependency information based on a search of the data model. In this example, if data object 808 is an anchor data object, lineage object 810 can be activated. Likewise, in this example, for some embodiments, a lineage engine can be configured to perform a search of the data model to determine that data object 808 depends on data object 806, data object 804, and data object 802.
[0138] In one or more of the various embodiments, the lineage engine can be configured to determine dependencies by searching the data model to determine which properties in a data object can depend on properties or other data objects. In this example, the lineage engine can determine that property 812 of data object 808 depends on property 814 of data object 802.
[0139] Thus, in one or more of the various embodiments, attribute-level dependency analysis enables the lineage engine to determine which data objects may be affected by the modification of individual attributes. In this example, for some embodiments, lineage analysis can identify that attribute 816 of data object 802 can be modified without affecting data object 808.
[0140] Figure 8B A logical diagram of a portion of a system 800 is illustrated, showing dependencies in a data model, according to one or more of various embodiments. In this example, the system 800 may be considered similar to the above-described system 700. In this example, for some embodiments, the system 800 includes a data object 802, a data object 804, a data object 806, and a data object 808.
[0141] In this example, lineage object 818 can be considered an activated lineage object (indicated by the bold line weight), and data object 802 can be considered an anchor data object. Thus, in this example, lineage analysis performed by the lineage engine can identify that data object 806 and data object 804 depend on attribute 816 of data object 802. Thus, in this example, if attribute 816 is modified, data object 804 and data object 806 may be affected, while data object 808 will not be affected by the modification of attribute 816 because none of the attributes of data object 808 directly or indirectly depend on attribute 816.
[0142] Likewise, in this example, because lineage object 818 is the active lineage object, lineage object 810 may be disabled (indicated by the normal line width).
[0143] Fig. 9 A logical diagram of a portion of a user interface 900 of an interactive lineage analyzer for data assets is illustrated in accordance with one or more of various embodiments. In some embodiments, if a lineage object can be activated, the lineage engine can be configured to determine some or all data objects that can be associated with a data model layer that can correspond to the activated lineage object. Thus, in some embodiments, an anchor data object can be selected or otherwise determined from these data objects. Thus, in some embodiments, if an anchor data object is determined, the lineage engine can perform lineage analysis based on the anchor data object.
[0144] In this example, user interface 900 can be configured to display a lineage model in a lineage panel 902. Thus, in some embodiments, lineage panel 902 can be configured to display one or more lineage objects, such as lineage object 904. Also, in some embodiments, lineage objects associated with lineage panel 902 can be displayed along with some or all lineage information that can be associated with data objects associated with a data model layer that corresponds to the given lineage object. In this example, lineage object 904 is represented by a bold, thick line to indicate that it is activated.
[0145] Further, in one or more of the various embodiments, lineage information about a lineage object, such as lineage information 906, may be displayed with the lineage model. In this example, lineage information 906 is displayed adjacent to or otherwise near the corresponding lineage object. As described above, lineage information may include information associated with a data model layer or a data object that may be associated with a lineage object. In this example, lineage information includes basic information, such as a name, a label, a data object count, etc. In one or more of the various embodiments, the lineage engine may be configured to determine the lineage information to be displayed based on default values obtained from configuration information or user preferences.
[0146] In some embodiments, a lineage analysis user interface, such as user interface 900, can be configured to include an object panel, such as object panel 908. In some embodiments, the object panel can be configured to display data objects, which can be associated with one or more data model layers. Thus, in some embodiments, if a lineage object can be activated, the lineage engine can be configured to determine one or more data objects that can be associated with the data model layer that is associated with the activated lineage object, so that these data objects can be displayed in the object panel (such as object panel 908).
[0147] In this example, object 910 represents some or all of the data objects that may be associated with an activated lineage object, such as lineage object 904. In some embodiments, there may be many data objects associated with a lineage object or data model layer. Thus, in some embodiments, panel 908 may be configured to include user interface controls for scrolling, paging, etc., to manage the display of data objects. Further, in some embodiments, the set of data objects displayed may be subject to one or more filters, restrictions, etc., which may reflect user preferences, system-wide configurations, etc. that may be obtained from configuration information.
[0148] In one or more of the various embodiments, as described above, the activated lineage object can correspond to a data model layer, which corresponds to a data object class. However, in some embodiments, one or more data model layers can be associated with many data objects. Therefore, in some embodiments, one or more data objects can be designated as anchor data objects. For example, if object 906 represents some or all data sources in the data model, data object 912 can represent the designated anchor data object.
[0149] In one or more of the various embodiments, the lineage engine may be configured to perform lineage analysis using an activated lineage object and a specified anchor data object, which lineage analysis may include searching the data model to determine one or more dependencies between or among data objects in the data model.
[0150] Generalized Operations
[0151] Figures 10 to 12 Represents a generalized operation of interactive lineage analysis of data analysis according to one or more of the various embodiments. In one or more of the various embodiments, in combination Figures 10 to 12 The described processes 1000, 1100, and 1200 may be performed by a single network computer such as Figure 3 In other embodiments, these processes or parts thereof may be implemented or executed by one or more processors on a network computer 300. Figure 3 In other embodiments, the processes or portions thereof may be implemented or executed by one or more virtual computers (such as virtual computers in a cloud-based environment). However, the embodiments are not so limited, and various combinations of network computers, client computers, etc. may be utilized. Further, in one or more of the various embodiments, in combination with Figures 10 to 12 The described processes may be used in accordance with various embodiments or architectures (such as in conjunction with Figures 4 to 9 Further, in one or more of the various embodiments, some or all of the actions performed by processes 800, 900, and 1000 may be performed in part by a data management engine 322, a display engine 324, or a lineage engine 326 running on one or more processors of one or more network computers.
[0152] Fig.10 An overview flow chart of a process 1000 for interactive lineage analysis of data assets according to one or more of the various embodiments is illustrated. After a start block, in one or more of the various embodiments, a data model may be provided to a lineage engine in a start block 1002. As described above, a data management engine, a display engine, etc. may be configured to generate data models that may be used by a visualization author or data steward to create data objects that may be associated with various data model layers or data object classes in the data model.
[0153] In block 1004, in one or more of the various embodiments, the lineage engine may be configured to determine a lineage model based on the data model. In one or more of the various embodiments, the lineage engine may be configured to investigate characteristics of the data model by performing various actions, such as scanning the data model, examining schema information, performing one or more queries or searches, etc. In some embodiments, the lineage engine may be configured to determine information for generating a lineage model from configuration information, etc.
[0154] In block 1006, in one or more of the various embodiments, the lineage engine may be configured to display the lineage model in an interactive lineage panel. As described above, the display engine may generate a user interface that includes the interactive lineage model.
[0155] In block 1008, in one or more of the various embodiments, the lineage engine may be configured to determine one or more data objects that may be associated with the activated lineage object. In one or more of the various embodiments, the lineage engine may be configured to perform a search of the data model to determine the one or more data objects associated with the activated lineage object. In some embodiments, the search may include a direct traversal of the data model. In other embodiments, the lineage engine may be configured to perform a query on a database where the data model may be stored. For example, in some embodiments, if the data model is stored in a graph-based database, the search may be performed by executing a graphQL or graphQL-like query to determine the one or more data objects associated with the activated lineage object.
[0156] In block 1010 , in one or more of the various embodiments, a display engine may be configured to display one or more data objects in an object panel.
[0157] In block 1012 , in one or more of the various embodiments, the lineage engine may be configured to search the data model to determine or track dependencies that may be associated with one or more specified anchor data objects.
[0158] In block 1014, in one or more of the various embodiments, the lineage engine may be configured to generate one or more impact reports that include information associated with the determined dependencies. For example, if a data administrator is evaluating the impact associated with a particular modification of a data object in a data model, the impact report may include a list of data objects that may be affected by the upcoming modification.
[0159] Likewise, in some embodiments, the impact report can be configured to include contact information for one or more users that may be affected by the modification. For example, the visualization server computer can be configured to maintain associations that a user may be responsible for or otherwise depend on one or more worksheets or workbooks in the data model. In some embodiments, user relationships to data objects can be included in the data model.
[0160] In one or more of the various embodiments, impact reporting may include automatically providing notifications to users regarding the impact of modifications to the data model.
[0161] Next, in one or more of the various embodiments, control may be returned to the calling process.
[0162] Fig.11 A flow chart of a process 1100 for interactive lineage analysis of data assets according to one or more of the various embodiments is illustrated. After a start block, in one or more of the various embodiments, a display engine may be configured to display a lineage model in a lineage panel on a user interface in start block 1102. As described above, a lineage model of a data model may include one or more lineage objects that correspond to some or all of the data model layers or data object classes in the data model.
[0163] In one or more of the various embodiments, some or all of the lineage objects may be displayed in an interactive lineage panel. Thus, in some embodiments, a user may easily see which lineage objects correspond to which data model layer. Further, in one or more of the various embodiments, the lineage panel may be configured to display some or all of the layer information (such as layer name / label, data object count, etc.) that may be associated with a lineage object.
[0164] In decision block 1104, in one or more of the various embodiments, if the lineage object can be activated, control can flow to block 1106; otherwise, control can loop back to block 1102. In some embodiments, the lineage panel can be configured to enable a user to activate a lineage object by selecting the lineage object using a touch interface, a pointing device, a hot key, etc.
[0165] In some embodiments, the lineage engine can be configured to restrict activation of one or more lineage objects to authorized users. Thus, in some embodiments, some users may not be able to activate some lineage objects in a lineage model. In some embodiments, the lineage engine can be configured to determine whether a user is authorized to activate a given lineage object based on configuration information.
[0166] Likewise, in some embodiments, the lineage panel can be set to automatically style the appearance or limit the interactivity of one or more lineage objects based on the role or permissions of the current user. For example, if the user does not have authorization to access the database layer of the data model, the lineage objects corresponding to the database layer of the data model can be styled to be unresponsive to user input (such as click, touch, hover, etc.).
[0167] In block 1106, in one or more of the various embodiments, the lineage engine may be configured to determine a data model layer based on the activated lineage object. As described above, a lineage object in a lineage model may be associated with a data model layer. Thus, in some embodiments, if a lineage object is activated, the lineage engine may be configured to determine a corresponding data model layer based on the activated lineage object. For example, in some embodiments, a data structure for representing a lineage object may include a property that stores an identifier or a reference to its corresponding data model layer.
[0168] In block 1108, in one or more of the various embodiments, the lineage engine may be configured to determine one or more data objects based on the data model layer. In some embodiments, the lineage engine may be configured to search the data model to find the data object of a particular data model layer. In some embodiments, the lineage engine may be configured to maintain one or more indexes or caches that may be used to directly determine the data objects of the data model layer without having to search the data model in real time.
[0169] Likewise, in one or more of the various embodiments, the data model may be represented or stored in a graph-based database. Thus, in one or more of the various embodiments, the lineage engine may be configured to generate one or more queries using graphQL or graphQL-like instructions that may be configured to search for data objects based on membership in a data object class or association with a data model layer corresponding to an activated lineage object.
[0170] Further, in some embodiments, if the data model is a diagrammatic model, the lineage engine may be arranged to perform the search by directly traversing the data model.
[0171] In block 1110, in one or more of the various embodiments, the display engine may be configured to display one or more data objects in the object panel. As described above, the display engine may be configured to display representations of data objects associated with a data model layer that corresponds to the activated lineage object. In some embodiments, there may be more data objects to display than may be displayed simultaneously. Thus, in some embodiments, the display engine may be configured to provide a scrolling or paging user interface to enable a user to browse through the data objects.
[0172] In one or more of the various embodiments, the display engine may be configured to generate an object panel that includes a search control that may be used to filter data objects that may be displayed in the object panel.
[0173] In one or more of the various embodiments, the lineage engine or the display engine may be configured to sort the display order of the data objects in the object panel based on a sort order, which may be defined based on the configuration information.
[0174] In decision block 1112 , if the interactive session can be completed, control can be returned to the calling process; otherwise, control can loop back to block 1102 .
[0175] In one or more of the various embodiments, the display engine and the lineage engine can be configured to work together to dynamically or automatically update the appearance of the lineage panel and the object panel as the user activates different lineage objects. Thus, in some embodiments, if some data objects are displayed after an initial activation of a lineage object, the display engine or the lineage engine can immediately prepare to activate another lineage object. Moreover, in some embodiments, the display engine or the lineage engine can be configured to determine and display one or more data objects in the object panel in response to one or more subsequently activated lineage objects.
[0176] In one or more of the various embodiments, process 1100 may terminate upon command, returning control to the calling process.
[0177] Fig.12 A flow diagram of a process 1200 for determining dependencies for interactive lineage analysis of data assets according to one or more of various embodiments is illustrated. After a start block, in one or more of various embodiments, a lineage engine may be configured to determine one or more anchor data objects in a start block 1202. As described above, in some embodiments, the lineage engine may be configured to perform a search of the data model to determine one or more data objects that may be associated with an activated lineage object.
[0178] In one or more of the various embodiments, one or more data objects associated with an activated lineage object may be designated as anchor data objects. In some embodiments, the lineage engine may be configured to automatically designate anchor data objects based on rules or other criteria determined based on configuration information. In some embodiments, one or more data model layers may be associated with a default anchor data object. For example, for some embodiments, the lineage engine may be configured to automatically designate anchor data objects based on one or more characteristics of the data object, such as age, recency of access (e.g., the default value may be the object most recently designated as an anchor object), frequency of access, user preferences, etc. In some embodiments, the lineage engine may be configured to obtain default rules for designating anchor data objects from configuration information.
[0179] In some embodiments, the anchor data object may be designated by another process or service. For example, a data management engine or display engine may be configured to provide a reference or identifier for a data object that may be designated as an anchor data object based on various conditions, including user interaction.
[0180] Likewise, in one or more of the various embodiments, the lineage engine may be configured to specify an anchor data object based on input provided by a data administrator, among other things.
[0181] In block 1204, in one or more of the various embodiments, the lineage engine may be configured to determine one or more anchor attributes included in the anchor data object. As described above, a data object may be configured to include one or more attributes that may depend on one or more attributes of another data object.
[0182] In one or more of the various embodiments, the lineage engine can be configured to perform various actions to determine the anchor attribute. In some embodiments, one or more data objects can have pre-assigned anchor attributes, which can be automatically determined if the data object can be designated as an anchor data object. In some embodiments, the anchor data object can include only one attribute, which can be automatically designated by the lineage engine. In some embodiments, a user can be enabled to directly select the anchor attribute from some or all attributes of the anchor data object.
[0183] In one or more of the various embodiments, the lineage engine may be configured to automatically determine an anchor attribute based on which attribute of the data object may be associated with the longest dependency chain or path in the data model. Further, in some embodiments, the lineage engine may be configured to select an anchor attribute based on how often it may have been previously designated as an anchor attribute.
[0184] In block 1206, in one or more of the various embodiments, the lineage engine may be configured to determine dependency information based on the anchor attribute. Thus, in one or more of the various embodiments, the lineage engine may be configured to search the data model from the anchor attribute to determine which attributes may depend on other data objects in the data model.
[0185] In one or more of the various embodiments, the data model may be a graph model that is arranged so that the relationship information represented by the edges between the nodes may include detailed information that may identify one or more properties that comprise the relationship between the data objects. Thus, in some embodiments, a data object may depend on another data object that is based on at least one property of the data object that depends on one or more properties of the other data object.
[0186] In one or more of the various embodiments, the lineage engine may be configured to perform one or more graph traversals using conventional graph traversal methods, such as depth-first search, breadth-first search, and the like.
[0187] In one or more of the various embodiments, the data model may be represented using a graph-based database system. Thus, in one or more of the various embodiments, the lineage engine may be configured to generate one or more queries using graphQL or graphQL-like instructions, which may be configured to search for dependent data objects based on attribute relationships of data objects in the data model.
[0188] In block 1208, in one or more of the various embodiments, the lineage engine may be configured to determine lineage information including at least the dependency information determined by the search. In one or more of the various embodiments, the lineage information based on the attribute dependencies may provide a granular view of the potential impact of a change to the data model.
[0189] In some embodiments, if the proposed change is to a rarely used property, the impact of the change may be less than would appear if lineage analysis were limited to object-level dependencies. For example, in some embodiments, even if a tabular data object has relationships with many descendant data objects, only a few of the descendant data objects may actually depend on one or more properties under consideration for modification. Thus, in some embodiments, property dependency information may provide a more accurate view of the impact associated with the modification being considered.
[0190] Next, in one or more of the various embodiments, control may be returned to the calling process.
[0191] It will be understood that the combination of each frame in each flowchart illustration and the frame in each flowchart illustration can be implemented by computer program instructions. These program instructions can be provided to the processor to produce a machine so that the instruction executed on the processor creates the mode of implementing the action specified in each flowchart frame or the frame. The computer program instruction can be executed by the processor so that a series of operation steps are executed by the processor to produce the process of computer implementation so that the instruction executed on the processor provides the step for implementing the action specified in each flowchart frame or the frame. The computer program instruction can also make at least some of the operation steps shown in the frame of each flowchart be executed in parallel. In addition, some steps can also be executed across more than one processor, such as may occur in a multi-processor computer system. In addition, without departing from the scope or spirit of the present invention, the combination of the frame in one or more frames or each flowchart illustration can also be executed simultaneously with the combination of other frames or frames, even in a different order from that shown.
[0192] Therefore, each box in each flowchart illustration supports a combination of ways to perform a specified action, a combination of steps for performing a specified action, and a program instruction way for performing a specified action. It will also be understood that each box in each flowchart illustration and a combination of boxes in each flowchart illustration can be implemented by a dedicated hardware-based system that performs the specified action or steps or a combination of dedicated hardware and computer instructions. The above examples should not be interpreted as limiting or exhaustive, but rather illustrative use cases for showing how to implement at least one of the various embodiments of the present invention.
[0193] Further, in one or more embodiments (not shown in the figure), the logic in the illustrative flow chart can be executed using an embedded logic hardware device instead of a CPU, such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a programmable array logic (PAL), etc., or a combination thereof. The embedded logic hardware device can directly execute its embedded logic to perform an action. In one or more embodiments, the microcontroller can be configured to directly execute its own embedded logic to perform an action, and access its own internal memory and its own external input and output interface (e.g., hardware pins or wireless transceivers) to perform an action, such as a system on a chip (SOC), etc.
Claims
1. A method for managing data using a computer, the computer comprising one or more processors, wherein: Each step of the method is performed by the one or more processors, and the method includes: providing a data model, the data model comprising a plurality of data objects associated with one or more layers of the data model; providing a lineage model, the lineage model comprising one or more lineage objects, wherein the one or more lineage objects are each associated with a data model layer of the one or more data model layers; activating a lineage object of the one or more lineage objects based on an association with a data model layer; determining a first portion of the plurality of data objects based on the data model and the activated lineage object, wherein the first portion of the data objects and the activated lineage object are associated with a same layer; determining an anchor object from the first portion of the data object based on one or more characteristics of the first portion of the data object; employing a search of the data model to provide dependency information based on a location of the anchor data object in the data model; Based on the dependency information, determining a second portion of the plurality of data objects; and A report is provided that includes one or more of the second portion of the data objects or the list of dependency information.
2. The method according to claim 1, wherein: Determining the dependency information further includes: determining one or more attributes associated with the anchor data object; searching the data model based on the one or more attributes and one or more other attributes associated with the plurality of data objects in the data model; and The dependency information is provided based on a search of the data model.
3. The method according to claim 1, further comprising: In response to the modification of one or more of the plurality of data objects, further actions are performed, the actions comprising: determining the activated lineage object based on the modified one or more data objects; determining the anchor data object based on the modified one or more data objects; determining one or more users associated with the modification based on the dependency information, wherein each user is associated with one or more data objects affected by the modification; and One or more notifications are provided to each user based on each affected data object associated with the user.
4. The method according to claim 1, further comprising: Instantiate a display engine to perform actions including: generating a graphical user interface (GUI), the GUI comprising a lineage panel and an object panel; displaying the lineage model and the one or more lineage objects in the lineage panel; displaying a first portion of the data object in the object panel; and determining another activated lineage object based on one or more inputs of the lineage panel; and Another portion of the plurality of data objects is automatically determined based on the another activated lineage object, wherein the another portion of the data objects is displayed in the object panel.
5. The method according to claim 1, wherein: Determining the second portion of the data object further includes modifying the second portion of the data object based on one or more filters, wherein the one or more filters are displayed in the lineage panel.
6. The method according to claim 1, further comprising: providing one or more data object classes based on the data model, wherein the one or more data object classes include one or more of a database, a table, a data source, a workbook, or a worksheet; and Each layer of the data model is associated with one of the one or more data object classes, wherein each data object is associated with a data object class corresponding to the layer associated with the layer.
7. The method according to claim 1, wherein: Providing the dependency information also includes: generating query information based on the data model and the anchor data object; and The query information is employed to perform a query that provides the dependency information.
8. A processor-readable non-transitory storage medium comprising instructions for managing data, wherein: The instructions are executed by one or more processors to perform the following actions, including: providing a data model, the data model comprising a plurality of data objects associated with one or more layers of the data model; providing a lineage model, the lineage model comprising one or more lineage objects, wherein the one or more lineage objects are each associated with a data model layer of the one or more data model layers; activating a lineage object of the one or more lineage objects based on an association with a data model layer; determining a first portion of the plurality of data objects based on the data model and the activated lineage object, wherein the first portion of the data objects and the activated lineage object are associated with a same layer; determining an anchor object from the first portion of the data object based on one or more characteristics of the first portion of the data object; employing a search of the data model to provide dependency information based on a location of the anchor data object in the data model; Based on the dependency information, determining a second portion of the plurality of data objects; and A report is provided that includes one or more of the second portion of the data objects or the list of dependency information.
9. The medium according to claim 8, wherein Determining the dependency information further includes: determining one or more attributes associated with the anchor data object; searching the data model based on the one or more attributes and one or more other attributes associated with the plurality of data objects in the data model; and The dependency information is provided based on a search of the data model.
10. The medium of claim 8, further comprising: In response to the modification of one or more of the plurality of data objects, further actions are performed, the actions comprising: determining the activated lineage object based on the modified one or more data objects; determining the anchor data object based on the modified one or more data objects; determining one or more users associated with the modification based on the dependency information, wherein each user is associated with one or more data objects affected by the modification; and One or more notifications are provided to each user based on each affected data object associated with the user.
11. The medium of claim 8, further comprising: Instantiate a display engine to perform actions including: generating a graphical user interface (GUI), the GUI comprising a lineage panel and an object panel; displaying the lineage model and the one or more lineage objects in the lineage panel; displaying a first portion of the data object in the object panel; and determining another activated lineage object based on one or more inputs of the lineage panel; and Another portion of the plurality of data objects is automatically determined based on the another activated lineage object, wherein the another portion of the data objects is displayed in the object panel.
12. The medium according to claim 8, wherein Determining the second portion of the data object further includes modifying the second portion of the data object based on one or more filters, wherein the one or more filters are displayed in the lineage panel.
13. The medium of claim 8, further comprising: providing one or more data object classes based on the data model, wherein the one or more data object classes include one or more of a database, a table, a data source, a workbook, or a worksheet; and Each layer of the data model is associated with one of the one or more data object classes, wherein each data object is associated with a data object class corresponding to the layer associated with the layer.
14. The medium according to claim 8, wherein Providing the dependency information also includes: generating query information based on the data model and the anchor data object; and The query information is employed to perform a query that provides the dependency information.
15. A system for managing data: A network computer, the network computer comprising: a transceiver for communicating via the network; a memory storing at least instructions; as well as One or more processors that execute instructions that perform the following actions, including: providing a data model, the data model comprising a plurality of data objects associated with one or more layers of the data model; providing a lineage model, the lineage model comprising one or more lineage objects, wherein the one or more lineage objects are each associated with a data model layer of the one or more data model layers; activating a lineage object of the one or more lineage objects based on an association with a data model layer; determining a first portion of the plurality of data objects based on the data model and the activated lineage object, wherein the first portion of the data objects and the activated lineage object are associated with a same layer; determining an anchor object from the first portion of the data object based on one or more characteristics of the first portion of the data object; employing a search of the data model to provide dependency information based on a location of the anchor data object in the data model; Based on the dependency information, determining a second portion of the plurality of data objects; and providing a report including one or more of the second portion of the data object or the list of dependency information, A client computer, the client computer comprising: a transceiver for communicating via the network; a memory storing at least instructions; and One or more processors that execute instructions that perform the following actions, including: The report is received.
16. The system of claim 15, wherein: Determining the dependency information further includes: determining one or more attributes associated with the anchor data object; searching the data model based on the one or more attributes and one or more other attributes associated with the plurality of data objects in the data model; and The dependency information is provided based on a search of the data model.
17. The system of claim 15, wherein: The one or more processors of the network computer execute instructions, the instructions performing the following actions, the actions also including: In response to the modification of one or more of the plurality of data objects, further actions are performed, the actions comprising: determining the activated lineage object based on the modified one or more data objects; determining the anchor data object based on the modified one or more data objects; determining one or more users associated with the modification based on the dependency information, wherein each user is associated with one or more data objects affected by the modification; and One or more notifications are provided to each user based on each affected data object associated with the user.
18. The system of claim 15, wherein: The one or more processors of the network computer execute instructions, the instructions performing the following actions, the actions also including: Instantiate a display engine to perform actions including: generating a graphical user interface (GUI), the GUI comprising a lineage panel and an object panel; displaying the lineage model and the one or more lineage objects in the lineage panel; displaying a first portion of the data object in the object panel; and determining another activated lineage object based on one or more inputs of the lineage panel; and Another portion of the plurality of data objects is automatically determined based on the another activated lineage object, wherein the another portion of the data objects is displayed in the object panel.
19. The system of claim 15, wherein: Determining the second portion of the data object further includes modifying the second portion of the data object based on one or more filters, wherein the one or more filters are displayed in the lineage panel.
20. The system of claim 15, wherein: The one or more processors of the network computer execute instructions, the instructions performing the following actions, the actions also including: providing one or more data object classes based on the data model, wherein the one or more data object classes include one or more of a database, a table, a data source, a workbook, or a worksheet; and Each layer of the data model is associated with one of the one or more data object classes, wherein each data object is associated with a data object class corresponding to the layer associated with the layer.
21. The system of claim 15, wherein: Providing the dependency information also includes: generating query information based on the data model and the anchor data object; and The query information is employed to perform a query that provides the dependency information.
22. A network computer for managing data, comprising: a transceiver for communicating via the network; A memory, wherein the memory stores at least instructions; as well as One or more processors, the one or more processors executing instructions, the instructions performing the following actions, the actions comprising: providing a data model, the data model comprising a plurality of data objects associated with one or more layers of the data model; providing a lineage model, the lineage model comprising one or more lineage objects, wherein the one or more lineage objects are each associated with a data model layer of the one or more data model layers; activating a lineage object of the one or more lineage objects based on an association with a data model layer; determining a first portion of the plurality of data objects based on the data model and the activated lineage object, wherein the first portion of the data objects and the activated lineage object are associated with a same layer; determining an anchor object from the first portion of the data object based on one or more characteristics of the first portion of the data object; employing a search of the data model to provide dependency information based on a location of the anchor data object in the data model; Based on the dependency information, determining a second portion of the plurality of data objects; and A report is provided that includes one or more of the second portion of the data objects or the list of dependency information.
23. The network computer according to claim 22, wherein: Determining the dependency information further includes: determining one or more attributes associated with the anchor data object; searching the data model based on the one or more attributes and one or more other attributes associated with the plurality of data objects in the data model; and The dependency information is provided based on a search of the data model.
24. The network computer according to claim 22, wherein: The one or more processors execute instructions, the instructions performing the following actions, the actions also including: In response to the modification of one or more of the plurality of data objects, further actions are performed, the actions comprising: determining the activated lineage object based on the modified one or more data objects; determining the anchor data object based on the modified one or more data objects; determining one or more users associated with the modification based on the dependency information, wherein each user is associated with one or more data objects affected by the modification; and One or more notifications are provided to each user based on each affected data object associated with the user.
25. The network computer according to claim 22, wherein: The one or more processors execute instructions, the instructions performing the following actions, the actions also including: Instantiate a display engine to perform actions including: generating a graphical user interface (GUI), the GUI comprising a lineage panel and an object panel; displaying the lineage model and the one or more lineage objects in the lineage panel; displaying a first portion of the data object in the object panel; and determining another activated lineage object based on one or more inputs of the lineage panel; and Another portion of the plurality of data objects is automatically determined based on the another activated lineage object, wherein the another portion of the data objects is displayed in the object panel.
26. The network computer according to claim 22, wherein: Determining the second portion of the data object further includes modifying the second portion of the data object based on one or more filters, wherein the one or more filters are displayed in the lineage panel.
27. The network computer according to claim 22, wherein: The one or more processors execute instructions, the instructions performing the following actions, the actions also including: providing one or more data object classes based on the data model, wherein the one or more data object classes include one or more of a database, a table, a data source, a workbook, or a worksheet; and Each layer of the data model is associated with one of the one or more data object classes, wherein each data object is associated with a data object class corresponding to the layer associated with the layer.
28. The network computer according to claim 22, wherein: Providing the dependency information also includes: generating query information based on the data model and the anchor data object; and The query information is employed to perform a query that provides the dependency information.
Citation Information
Patent Citations
ULDB (Databases with Uncertainty and Lineage)-based marine environmental monitored data management system
CN102081764A
Managing parameter sets
CN106716352A