An interactive lineage analyzer for data assets

By employing lineage objects to manage data lineage and track dependencies within a data model, the system addresses the challenges of data visualization management, ensuring efficient data change tracking and improved data-driven insights.

JP7649753B2Active Publication Date: 2025-03-21TABLEAU SOFTWARE INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2021562314
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-04-19
Filing Date
2020-04-14
Publication Date
2025-03-21
Estimated Expiration
2040-04-14

AI Technical Summary

Technical Problem

Organizations face challenges in effectively utilizing their vast data collections due to the complexity of managing data visualizations, which often rely on multiple data sources. Minor changes to databases can significantly affect visualizations, making it difficult to identify and manage these changes across various applications.

Method used

The implementation of a system that uses lineage objects to manage data lineage information, allowing for the identification of dependencies between data objects and visualizations. This system includes a data model that tracks changes and provides dependency information, enabling better management of data changes and their impacts on visualizations.

Benefits of technology

This approach enables organizations to efficiently track and manage data changes, reducing the complexity of data visualization management and improving the accuracy of data-driven insights by clearly identifying affected applications and visualizations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007649753000001
    Figure 0007649753000001
  • Figure 0007649753000002
    Figure 0007649753000002
  • Figure 0007649753000003
    Figure 0007649753000003
Patent Text Reader

Abstract

Embodiments relate to managing a data model including data objects associated with layers of the data model that can be provided. A lineage model can be provided including a lineage object having one or more lineage objects associated with the layer. The lineage object associated with the layer can be activated. A first portion of the data object can be determined based on the activated lineage object. An anchor object can be determined from the first portion of the data object. A search of the data model can be used to provide dependency information based on the position of the anchor data object within the data model. A second portion of the data object can be determined based on the dependency information. A report can be provided that includes a list of the second portions of the data objects, dependency information, or the like.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates generally to data visualization, and more particularly, but not exclusively, to managing the display of objects contained in a data visualization. [Background technology]

[0002] Organizations generate and collect an ever-increasing amount of data. This data can relate to different departments of the organization, such as consumer activities, manufacturing activities, customer service, or server logs. Summary of the Invention [Problem to be solved by the invention]

[0003] It may be inconvenient for such organizations to effectively utilize their vast collections of data for various reasons. In some cases, the volume of data may make it difficult to effectively utilize the collected data to improve business operations. Thus, in some cases, an organization may use various applications or tools to generate visualizations based on some or all of its data. Organizations may use visualizations that represent data to improve understanding of business operations, sales, customer information, employee information, key performance indicators, and the like. In some cases, advanced visualizations may incorporate or otherwise rely on data from various sources within the organization, including different databases. In some cases, many different visualizations may rely on these various or different data sources. Thus, even a seemingly minor change to a database or other data provider may have a widespread impact on one or more visualizations or applications currently in use. In some cases, it may be difficult to identify the impact of a data change (e.g., modifying a column in a database table) since it may be difficult in some circumstances to identify which end-user applications may be affected by the change. Thus, the present invention is made in response to these and other considerations. [Means for solving the problem]

[0004] Non-limiting and non-exhaustive embodiments of the present innovation are described with reference to the following drawings, in which like reference numerals refer to like parts throughout the various views unless otherwise specified. For a better understanding of the present innovation, reference is made to the following detailed description of various embodiments, which should be read in connection with the accompanying drawings. [Brief description of the drawings]

[0005] [Figure 1] FIG. 1 illustrates a system environment in which various embodiments may be implemented. [Diagram 2]FIG. 2 illustrates a schematic embodiment of a client computer. [Diagram 3] FIG. 1 illustrates a schematic embodiment of a network computer. [Figure 4] FIG. 1 illustrates a logical architecture of an interactive lineage analysis system for data assets, according to one or more of the various embodiments. [Diagram 5] FIG. 1 illustrates a logical representation of a portion of an interactive graph-based data visualization system that can be in accordance with one or more of the various embodiments. [Figure 6] FIG. 2 illustrates a logical schematic diagram of a lineage object, which represents a data structure for managing lineage information, in accordance with one or more of the various embodiments. [Figure 7] FIG. 1 illustrates a logical overview of a portion of a system illustrating dependencies within a data model, according to one or more of various embodiments. [Figure 8A] FIG. 1 illustrates a logical overview of a portion of a system illustrating dependencies within a data model, according to one or more of various embodiments. [Figure 8B] FIG. 1 illustrates a logical overview of a portion of a system illustrating dependencies within a data model, according to one or more of various embodiments. [Figure 9] FIG. 2 illustrates a logical overview of a portion of a user interface of an interactive lineage analyzer of a data asset, according to one or more of the various embodiments. [Figure 10] FIG. 1 illustrates a schematic flowchart of a process for interactive lineage analysis of a data asset, in accordance with one or more of the various embodiments. [Figure 11] FIG. 1 illustrates a flowchart of a process for interactive lineage analysis of a data asset in accordance with one or more of the various embodiments. [Figure 12] FIG. 1 illustrates a flowchart 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 OF THE PREFERRED EMBODIMENTS

[0006] Various embodiments are described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific exemplary embodiments in which the present invention may be practiced. However, these embodiments may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein, but rather these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the embodiments to those skilled in the art. Among other things, the various embodiments may be methods, systems, or devices. Thus, the various embodiments may take the form of entirely hardware embodiments, entirely software embodiments, or embodiments combining software and hardware aspects. Thus, the following detailed description is not to be taken in a limiting sense.

[0007] Throughout this specification and claims, the following terms shall take the meanings clearly associated therewith, unless otherwise indicated by the context. As used herein, the phrase "in one embodiment" may refer to the same embodiment, but not necessarily so. Additionally, as used herein, the phrase "in another embodiment" may refer to different embodiments, but not necessarily so. Thus, as described below, various embodiments can be readily combined without departing from the scope or spirit of the present invention.

[0008] Additionally, as used herein, the term "or" is an inclusive "or" operator and is equivalent to the term "and / or" unless the context clearly indicates otherwise. The term "based on" is not exclusive and may be based on additional unlisted factors unless the context clearly indicates otherwise. Additionally, throughout this specification, the meanings of "a," "an," and "the" include plural referents. The meaning of "in" includes "in" and "on."

[0009] With respect to the example embodiments, the following terms are also used herein in accordance with their corresponding meanings unless the context clearly indicates otherwise:

[0010] The term "engine" as used herein refers to logic embodied in hardware or software instructions that may be written in a programming language such as C, C++, Objective C, COBOL, Java™, Kotlin, PHP, Perl, JavaScript, Ruby, VB Script, C#, or other Microsoft.NET™ languages. An engine may be compiled into an executable program or written in an interpreted programming language. A software engine may be called by other engines or by itself. An engine as described herein refers to one or more logical modules that may be integrated into other engines or applications or may be divided into sub-engines. An engine may be stored on a non-transitory computer-readable medium or computer storage device, or may be stored on and executed by one or more general-purpose computers, thus forming a special-purpose computer configured to provide an engine. Also, in some embodiments, one or more portions of an engine may be a hardware device, ASIC, FPGA, or the like that performs one or more operations with the aid of or as part of the engine.

[0011] As used herein, the term "data model" refers to one or more data structures that represent one or more entities related to data collected or maintained by an organization. Typically, a data model is configured to model various operations or activities related to an organization. In some instances, a data model is configured to provide or facilitate various data-centric operations, such as efficient storage, querying, indexing, retrieval, updating, etc. In general, a data model may be configured to provide functionality related to data manipulation or data management, rather than providing an easy-to-understand data presentation or visualization.

[0012] As used herein, the term "data object" refers to one or more entities or data structures that comprise a data model. In some examples, 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, or a workflow.

[0013] As used herein, "data object class" or "object class" means one or more entities or data structures that represent a class, kind or type of data object.

[0014] As used herein, the term "display model" means one or more data structures that represent one or more representations of a data model that may be suitable for use in a visualization displayed on one or more hardware displays. A display model may define stylization or user interface functionality available to non-authoring users.

[0015] As used herein, the term "lineage model" refers to one or more data structures that represent a dedicated model for representing lineage information for a corresponding data model.

[0016] As used herein, the term "lineage object" refers to one or more data structures that include a lineage model that may correspond to a data object class represented by the lineage model.

[0017] As used herein, the term "display object" refers to one or more data structures that comprise a display model. In some examples, a display object may be considered to be part of a display model. A display object may represent an individual instance of an item that can be displayed in a visualization, or an entire class or type of item. In some embodiments, a display object may be considered or referred to as a view because it provides a view of some portion of a data model.

[0018] As used herein, the term "anchor data object" means a data object that is designated as a starting point for a lineage analysis of a data model. An anchor data object may be a data object designed or selected from one or more data objects that are related to a lineage object.

[0019] As used herein, the term "anchor attribute" refers to an attribute, field, or characteristic of a data object that is selected as a starting point for performing attribute-level data lineage analysis.

[0020] 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) within the GUI. A panel can be configured to display information to a user or host one or more interactive controls. The placement or style associated with a panel can be determined using configuration information, including dynamic rules. Also, in some examples, a user can perform actions on one or more panels, such as moving, showing, hiding, resizing, or reordering.

[0021] As used herein, the term "configuration information" means information that may include rule-based policies, pattern matching, or scripts (e.g., computer-readable instructions), which may be provided from a variety of sources, including configuration files, databases, user input or built-in defaults, or the like, or a combination thereof.

[0022] SUMMARY OF THE DISCLOSURE The following presents a simplified description of embodiments of the invention in order to provide a basic understanding of some aspects of the invention. This brief description is not intended to be an extensive overview, nor is it intended to identify key or critical elements or to delineate or otherwise narrow the scope. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.

[0023] Briefly, various embodiments relate to managing data using a network computer. In one or more of the various embodiments, a data model may be provided that includes a plurality of data objects that may be related to one or more layers of the data model.

[0024] In one or more of various embodiments, a lineage model may be provided that includes one or more lineage objects, such that the one or more lineage objects may each be associated with one of one or more data model layers.

[0025] In one or more of the various embodiments, one of the one or more lineage objects may be activated based on an association with the data model layer.

[0026] In one or more of various embodiments, a first portion of the plurality of data objects may be determined based on a data model or 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.

[0027] In one or more of various embodiments, the 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.

[0028] In one or more of various embodiments, searching the data model can be used to provide dependency information based on the location of the anchor data object in the data model. In one or more of various embodiments, providing the dependency information can include determining one or more attributes that can be associated with the anchor data object, searching the data model based on one or more attributes or one or more other attributes that can be associated with multiple data objects in the data model, and providing the dependency information based on one or more associations, or the one or more attributes and one or more other attributes. In one or more of various embodiments, providing the dependency information can include generating query information based on the data model and the anchor data object, using the query information to execute a query that can provide the dependency information, and the like.

[0029] In one or more of various embodiments, a second portion of the plurality of data objects can be determined based on the dependency information. In one or more of various embodiments, determining the second portion of the data objects can include modifying the second portion of the data objects based on one or more filters displayable in the lineage panel.

[0030] In one or more of the various embodiments, further operations 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 the dependency information such that each user may be associated with one or more data objects that may be affected by the modification, or providing one or more notifications to each user based on each affected data object associated with the user.

[0031] In one or more of the various embodiments, one or more reports may be provided that include, for example, a list of the second portions of the data objects or dependency information.

[0032] In one or more of the various embodiments, the display engine can be instantiated to perform operations 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, determining another activated lineage object based on one or more inputs to the lineage panel, or automatically determining another portion of a plurality of data objects that can be displayed in the object panel based on the another activated lineage object, and the like.

[0033] In one or more of various embodiments, one or more data object classes may be provided based on the data model, such that the one or more data object classes include one or more of a database, a table, a data source, a workbook, or a sheet, etc. Also, in one or more of various embodiments, each tier of the data model may be associated with one of the one or more data object classes, such that each data object may be associated with a data object class that may correspond to a data object class that may be associated with a tier.

[0034] Example Operating Environment 1 illustrates components of one embodiment of an environment in which an embodiment of the present invention may be implemented. Not all of these components are required to implement the present invention, and the configuration and type of components may vary without departing from the spirit or scope of the present invention. As illustrated, the system 100 of FIG. 1 includes a local area network (LAN) / wide area network (WAN)-(network) 110, a wireless network 108, client computers 102-105, or a visualization server computer 116, etc.

[0035] At least one embodiment of the client computers 102-105 is described in detail below in connection with FIG. 2. In one embodiment, at least some of the client computers 102-105 may operate over one or more wired or wireless networks, such as network 108 or 110. In general, the client computers 102-105 may include virtually any computer capable of communicating over a network to transmit or receive information, perform various online or offline activities, and the like. In one embodiment, one or more of the client computers 102-105 may be configured to operate within a business or other entity to perform various services for the business or other entity. For example, the client computers 102-105 may be configured to operate as a web server, a firewall, a client application, a media player, a mobile phone, a game console, or a desktop computer, and the like. However, the client computers 102-105 are not limited to these services and may be used in other embodiments in connection with end-user computing, for example. It should be appreciated that a system as described herein may include more or fewer client computers (as shown in FIG. 1), and thus embodiments are not limited by the number or type of client computers used.

[0036] Computers that can operate as client computers 102 can include computers that typically connect using wired or wireless communication media, such as personal computers, multiprocessor systems, microprocessor-based or programmable electronic devices, or network PCs. In some embodiments, client computers 102-105 can include virtually any portable computer that can connect to and receive information from another computer, such as laptop computer 103, mobile computer 104, or tablet computer 105. However, portable computers are not so limited and can 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, or integrated devices that combine one or more of these computers. Thus, client computers 102-105 typically range widely in capabilities and functionality. Additionally, client computers 102-105 can access a variety of computer applications, including browsers or other web-based applications.

[0037] A web-enabled client computer may include a browser application configured to send requests and receive responses over the web. The browser application may be configured to receive and display graphics, text, multimedia, and the like using virtually any web-based language. In one embodiment, the browser application may display and send messages using JavaScript, HyperText Markup Language (HTML), Extensible Markup Language (XML), JavaScript Object Notation (JSON), Cascading Style Sheets (CSS), and the like, or a combination thereof. In one embodiment, a user of a client computer may use the browser application to perform various activities over a network (online). However, different applications may be used to perform various online activities.

[0038] The client computers 102-105 may also include at least one other client application configured to receive or send content to or from another computer. The client application may include the ability to send or receive content, etc. The client application may further provide information that identifies itself, including type, capabilities, and name, etc. In one embodiment, the client computers 102-105 may uniquely identify themselves through any of a variety of mechanisms, including an Internet Protocol (IP) address, a phone number, a Mobile Identification Number (MIN), an Electronic Serial Number (ESN), a client certificate, or other device identifier. Such information may be provided, for example, in one or more network packets sent to or from the other client computers, the visualization server computer 116, or other computers.

[0039] The client computers 102-105 may further be configured to include a client application that allows 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 allow the end user to manage one or more online activities, including, in one non-limiting example, project management, software development, systems administration, configuration management, search activities, social networking activities, browse various websites, or communicate with other users. The client computers may also be configured to allow the user to view reports, interactive user interfaces, or results provided by the visualization server computer 116.

[0040] Wireless network 108 is configured to couple client computers 103-105 and their components to network 110. Wireless network 108 may include any of a variety of wireless sub-networks that provide infrastructure-oriented connectivity to client computers 103-105, further overlaid with standalone ad-hoc networks, and the like. Such sub-networks may include mesh networks, wireless LAN (WLAN) networks, cellular networks, and the like. In one embodiment, the system may include multiple wireless networks.

[0041] The wireless network 108 may further include autonomous systems of terminals, gateways, and routers connected by wireless radio links, etc. These connectors may be configured to move freely and randomly and organize themselves arbitrarily, allowing the topology of the wireless network 108 to change quickly.

[0042] The wireless network 108 may further use multiple access technologies including second generation (2G), third generation (3G), fourth generation (4G), fifth generation (5G) wireless access for cellular systems, WLAN and wireless router (WR) mesh, etc. Access technologies such as 2G, 3G, 4G, 5G and future access networks may enable widespread coverage of mobile computers such as the client computers 103-105 with various degrees of mobility. In one non-limiting example, the wireless network 108 may enable wireless connectivity through 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. wireless network access. In short, wireless network 108 can include virtually any wireless communication mechanism capable of conveying information between client computers 103-105 and another computer, network, cloud-based network or cloud instance, or the like.

[0043] Network 110 is configured to couple the network computers to other computers, including visualization server computer 116, client computer 102, and client computers 103-105, such as through wireless network 108. Network 110 can communicate information from one electronic device to another using any form of computer-readable media. Network 110 can also include a local area network (LAN), a wide area network (WLAN), or the Internet in addition to direct connections, such as through a universal serial bus (USB) port, an Ethernet port, other forms of computer-readable media, or any combination thereof. In a set of interconnected LANs, including those based on different architectures and protocols, a router acts as a link between the LANs, allowing messages to be sent from one to the other. Also, while communication links within a LAN typically include twisted pair wires or coaxial cables, communication links between networks may utilize other carrier mechanisms including analog telephone lines, fully or partially dedicated digital lines including T1, T2, T3 and T4, or wireless links including, for example, E-carrier, Integrated Services Digital Network (ISDN), Digital Subscriber Line (DSL), satellite links, or other communication links known to those skilled in the art. Furthermore, the communication links may further use any of a variety of digital signaling technologies including, for example, without limitation, DS-0, DS-1, DS-2, DS-3, DS-4, OC-3, OC-12 or OC-48. Additionally, remote computers and other associated electronic devices may be remotely connected to either the LAN or WAN via modems and temporary telephone links. In one embodiment, the network 110 may be configured to transfer information in the Internet Protocol (IP).

[0044] Additionally, communication media typically embodies computer readable instructions, data structures, program modules, or other transport mechanisms and includes any non-transitory or transitory information delivery media. By way of example, communication media includes wired media such as twisted pair, coaxial cable, fiber optics, wave guides, and other wired media, and wireless media such as acoustic, RF, infrared and other wireless media.

[0045] Additionally, one embodiment of the visualization server computer 116 is described in more detail below in connection with FIG. 3. Although FIG. 1 illustrates the visualization server computer 116 as a single computer, the innovations or embodiments are not so limited. For example, one or more functions, etc. of the visualization server computer 116 may be distributed across one or more different networked computers. Additionally, in one or more embodiments, the visualization server computer 116 may be implemented using multiple networked computers. Additionally, in one or more of the various embodiments, the visualization server computer 116, etc. may be implemented using one or more cloud instances in one or more cloud networks. Thus, these innovations and embodiments should not be construed as limited to one environment, and other configurations and other architectures are contemplated.

[0046] Exemplary Client Computer 2 illustrates one embodiment of a client computer 200, which may include more or fewer components than those shown. The client computer 200 may represent one or more embodiments of the mobile computer or client computer illustrated in FIG.

[0047] The client computer 200 may include a processor 202 in communication 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 haptic interface 264, a global positioning system (GPS) receiver 258, an open air gesture interface 260, a temperature interface 262, a camera(s) 240, a projector 246, a pointing device interface 266, a processor-readable fixed storage 234, and a processor-readable removable storage 236. The client computer 200 may optionally communicate with a base station (not shown) or directly with another computer. Also, in one embodiment, a gyroscope may be used within the client computer 200 to measure or maintain the orientation of the client computer 200, although not shown.

[0048] The power supply 230 can provide power to the client computer 200. Power can be provided by a rechargeable or non-rechargeable battery, or by an external power source such as an AC adapter or a powered docking cradle that supplements or recharges the battery.

[0049] 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 various other wireless communication protocols. Network interface 232 is also known as a transceiver, a data transceiver, or a network interface card (NIC).

[0050] Audio interface 256 may be configured to generate and receive audio signals, such as the sound of a human voice. For example, audio interface 256 may be coupled to a speaker and microphone (not shown) to enable remote communication with others or to generate audio acknowledgments for some actions. The microphone of audio interface 256 may also be used for input to or control of client computer 200, such as by using voice recognition and detecting touch based on sound.

[0051] 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 transmissive display usable with a computer. Display 250 may also include a touch interface 244 configured to receive input from an object, such as a stylus or a human finger, and may sense touch or gestures using resistive, capacitive, surface acoustic wave (SAW), infrared, radar, or other technologies.

[0052] Projector 246 may be a remote handheld projector or an integrated projector capable of projecting an image onto a distant wall or any other reflective object, such as a distant screen.

[0053] Video interface 242 may be configured to capture video images, such as still images, video segments, or infrared video. For example, video interface 367 may be coupled to a digital video camera, a webcam, or the like. Video interface 242 may include lenses, image sensors, 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 that senses light.

[0054] Keypad 252 may include any input device configured to receive input from a user. For example, keypad 252 may include a push button numeric dial or a keyboard. Keypad 252 may also include command buttons associated with selecting and sending images.

[0055] The illuminator 254 can provide a status indication or light. The illuminator 254 can remain active for a particular period of time or in response to an event message. For example, when the illuminator 254 is active, it can backlight buttons on the keypad 252 and remain in that state while the client computer is running. The illuminator 254 can also backlight these buttons in various patterns when certain actions are performed, such as dialing another client computer. The illuminator 254 can also enable light sources present within a transparent or translucent case of the client computer to light up in response to an action.

[0056] Additionally, client computer 200 may also include a hardware security module (HSM) 268 that provides additional tamper-proofing by generating, storing and / or using security / cryptographic information, such as keys, digital signatures, passwords, passphrases, or two-factor authentication information. In some embodiments, the hardware security module may be used to support one or more standard public key infrastructures (PKIs), such as to generate, manage or store key pairs. In some embodiments, HSM 268 may be a standalone computer, while in other examples, HSM 268 may be configured as a hardware card that can be added to a client computer.

[0057] Client computer 200 may also include input / output interface 238 for communicating with external peripherals or other computers, such as other client computers and network computers. Peripherals may include audio headsets, virtual reality headsets, display screen glasses, remote speaker systems, remote speaker and microphone systems, etc. Input / output interface 238 may use one or more technologies, such as Universal Serial Bus (USB), infrared, WiFi, WiMAX, Bluetooth™, etc.

[0058] The input / output interface 238 may also include one or more sensors for determining geolocation information (e.g., GPS), monitoring power conditions (e.g., voltage, current and frequency sensors, etc.), or monitoring weather (e.g., thermostat, barometer, anemometer, humidity detector or precipitation scale, etc.), etc. The sensors may be one or more hardware sensors that collect or measure data external to the client computer 200.

[0059] The haptic interface 264 can be configured to provide haptic feedback to the user of the client computer. For example, the haptic interface 264 can be used to vibrate the client computer 200 in a particular manner when another user of the computer is making a call. The temperature interface 262 can be used to provide a temperature measurement input or a temperature change output to the user of the client computer 200. The open air gesture interface 260 can sense the physical gestures of the user of the client computer 200, for example, by using single or stereoscopic video cameras, radar, and gyroscope sensors in the computer held or worn by the user. The camera 240 can be used to track the physical eye movements of the user of the client computer 200.

[0060] The GPS transceiver 258 can determine the physical coordinates of the client computer 200 on the Earth's surface, typically outputting a location as latitude and longitude values. The GPS transceiver 258 can further determine the physical location of the client computer 200 on the Earth's surface using other geopositioning mechanisms, including, but not limited to, triangulation, Assisted GPS (AGPS), Enhanced Observed Time Difference (E-OTD), Cell Identifier (CI), Service Area Identifier (SAI), Enhanced Timing Advance (ETA), or Base Station Subsystem (BSS), etc. It should be appreciated that the GPS transceiver 258 can determine the physical location of the client computer 200 under a variety of conditions. However, in one or more embodiments, the client computer 200, through other components, can also provide other information that can be used to determine the physical location of the client computer, including, for example, a Media Access Control (MAC) address and an IP address.

[0061] In at least one of various embodiments, an application, such as the operating system 206, the client display engine 222, other client apps 224, or the web browser 226, can be configured to use the geolocation information to select one or more localization features, such as time zone, language, currency, calendar format, etc. The localization features can be used in documents, visualizations, display objects, display models, action objects, user interfaces, reports, as well as internal processes or databases. In at least one of various embodiments, the geolocation information used to select the localization information can be provided by the GPS 258. Also, in some embodiments, the geolocation information can include information provided using one or more geolocation protocols over a network, such as the wireless network 108 or the network 111.

[0062] The human interface components may be peripheral devices that are physically separate from the client computer 200 and allow remote input or output to the client computer 200. For example, information routed as described herein through a human interface component such as the display 250 or keyboard 252 may instead be routed through the network interface 232 to an appropriate human interface component located at a remote location. Examples of human interface peripheral components that may be located at a remote location include, but are not limited to, audio devices, pointing devices, keypads, displays, cameras, projectors, and the like. These peripheral components may communicate via pico-networks such as Bluetooth™ and Zigbee™. One non-limiting example of a client computer that includes such peripheral human interface components includes a wearable computer that includes a remote pico-projector and one or more cameras that communicate remotely with the remotely located client computer and that can sense user gestures directed at portions of an image projected by the pico-projector onto a reflective surface such as a wall or the user's hand.

[0063] The client computer 350 may include a web browser application 226 configured to send and receive web pages, web-based messages, graphics, text, multimedia, and the like. The browser application of the client computer may use virtually any programming language, including Wireless Application Protocol Messages (WAP), and the like. In one or more embodiments, the browser application may use Handheld Device Markup Language (HDML), Wireless Markup Language (WML), WMLScript, JavaScript, Generalized Markup Language (SGML), HyperText Markup Language (HTML), Extensible Markup Language (XML), HTML5, and the like.

[0064] The memory 204 may include RAM, ROM, or other types of memory. The memory 204 represents an example of a computer-readable storage medium (device) for storing information such as computer-readable instructions, data structures, program modules, or other data. The memory 204 may store a BIOS 208 that controls the low-level operation of the client computer 350. The memory may also store an operating system 206 that controls the operation of the client computer 200. It will be understood that this component may include a general-purpose operating system, such as a particular version of UNIX or LINUX™, or a dedicated client computer communications operating system, such as WindowsPhone™, Android™, or IOS operating systems. The operating system may also include or be connected to a Java Virtual Machine module that allows control of hardware components or the operating system via Java application programs.

[0065] The memory 204 may further include one or more data storages 210 that the client computer 200 may utilize to store, among other things, the applications 220 and / or other data. For example, the data storage 210 may be used to store information describing various capabilities of the client computer 200. This information may then be provided to another device or computer based on any of a variety of methods, including as part of a header during a communication or upon request. The data storage 210 may also be used to store social networking information, including address books, friend lists, aliases, or user profile information. The data storage 210 may include program code, data, algorithms, and the like, used by a processor, such as the processor 202, to execute and perform operations. In one embodiment, at least a portion of the data storage 210 may be stored on another component of the client computer 200, including, but not limited to, a non-transitory processor-readable removable storage 236, a processor-readable non-removable storage 234, or external to the client computer.

[0066] The applications 220 may include computer-executable instructions that, when executed by the client computer 200, send, receive, or otherwise process instructions and data. For example, the applications 220 may include a client display engine 222, other client applications 224, or a web browser 226. The client computers 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, or combinations thereof.

[0067] 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, and search programs.

[0068] Also, in one or more embodiments (not shown), instead of a CPU, the client computer 200 may include an embedded logic hardware device, such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a programmable array logic (PAL), or a combination thereof. The embedded logic hardware device may directly execute its embedded logic to perform operations. Also, in one or more embodiments (not shown), instead of a CPU, the client computer 200 may include one or more hardware microcontrollers. In one or more embodiments, the one or more microcontrollers may directly execute their own embedded logic to perform operations, as well as access their own internal memory, such as a system on chip (SOC), and their own external input and output interfaces (e.g., hardware pins or wireless transceivers) to perform operations.

[0069] Exemplary Network Computer 3 illustrates one embodiment of a network computer 300 that may be included in a system implementing one or more of the various embodiments. The network computer 300 may include more or fewer components than those illustrated in FIG. 3. However, the illustrated components are sufficient to disclose an exemplary embodiment for implementing these innovations. The network computer 300 may represent, for example, one embodiment of one or more of the visualization server computers 116 of FIG. 1.

[0070] A network computer such as network computer 300 may include a processor 302 that may communicate with memory 304 via bus 328. In some embodiments, processor 302 may be comprised of one or more hardware processors or one or more processor cores. In some examples, one or more of the one or more processors may be special-purpose processors designed to perform one or more specialized operations as 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 334, and a processor-readable removable storage 336. Power supply 330 provides power to network computer 300.

[0071] Network interface 332 includes circuitry for coupling network computer 300 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 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 Messaging 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 other of a variety of wired and wireless communication protocols. Network interface 332 is also known as a transceiver, transceiver, or network interface card (NIC). Network computer 300 may optionally communicate with a base station (not shown) or may communicate directly with another computer.

[0072] Audio interface 356 is configured to generate and receive audio signals, such as the sound of a human voice. For example, audio interface 356 may be coupled to a speaker and microphone (not shown) to enable communication with others or to generate audio acknowledgments for some actions. The microphone of audio interface 356 may also be used for input to or control of network computer 300, for example using voice recognition.

[0073] Display 350 can 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 transmissive display that can be used with a computer. In some embodiments, display 350 can be a handheld projector or picoprojector that can project an image onto a wall or other object.

[0074] Network computer 300 may also include input / output interface 338 for communicating with external devices or computers not shown in Figure 3. Input / output interface 338 may utilize one or more wired or wireless communication technologies, such as USB™, Firewire™, WiFi, WiMAX, Thunderbolt™, infrared, Bluetooth™, ZigBee™, serial ports, and parallel ports.

[0075] Input / output interface 338 may also include one or more sensors for determining geolocation information (e.g., GPS), monitoring power conditions (e.g., voltage, current and frequency sensors, etc.), or monitoring weather (e.g., thermostat, barometer, anemometer, humidity detector, or precipitation scale, etc.). The sensors may be one or more hardware sensors that collect or measure data external to network computer 300. Human interface components may be physically separate from network computer 300 to allow remote input and / or output to network computer 300. For example, information routed as described herein through a human interface component such as display 350 or keyboard 352 may instead be routed through network interface 332 to an appropriate human interface component located elsewhere on the network. A human interface component includes any component that enables a computer to receive input from and transmit output to a human user thereof. Thus, a pointing device such as a mouse, stylus or trackball may communicate through pointing device interface 358 to receive user input.

[0076] The GPS transceiver 340 can determine the physical coordinates of the network computer 300 on the Earth's surface, typically outputting a location as latitude and longitude values. The GPS transceiver 340 can further determine the physical location of the network computer 300 on the Earth's surface using other geopositioning mechanisms, including, but not limited to, triangulation, Assisted GPS (AGPS), Enhanced Observed Time Difference (E-OTD), Cell Identifier (CI), Service Area Identifier (SAI), Enhanced Timing Advance (ETA), or Base Station Subsystem (BSS), etc. It should be appreciated that the GPS transceiver 340 can determine the physical location of the network computer 300 under a variety of conditions. However, in one or more embodiments, the network computer 300, through other components, can also provide other information that can be used to determine the physical location of the client computer, including, for example, a Media Access Control (MAC) address and an IP address.

[0077] In at least one of the various embodiments, applications such as the operating system 306, data management engine 322, display engine 324, lineage engine 326, web services 329, etc., can be configured to utilize geolocation information to select one or more localization features, such as time zone, language, currency, currency format, calendar format, etc. The localization features can be used in documents, file systems, user interfaces, reports, display objects, display models, visualizations, as well as 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 the GPS 340. Also, in some embodiments, the geolocation information can include information provided using one or more geolocation protocols over a network, such as the wireless network 108 or the network 110.

[0078] The memory 304 may include random access memory (RAM), read only memory (ROM), or other types of memory. The memory 304 represents an example of a computer-readable storage medium (device) for storing information such as computer-readable instructions, data structures, program modules, or other data. The memory 304 stores a basic input / output system (BIOS) 308 that controls the low-level operation of the network computer 300. The memory also stores an operating system 306 that controls the operation of the network computer 300. It will be understood that this component may include a general-purpose operating system, such as a particular version of UNIX or LINUX™, or a dedicated operating system, such as Microsoft's Windows operating system or Apple's OSX operating system. The operating system may also include or be connected to one or more virtual machine modules, such as a Java virtual machine module that allows control of hardware components or the operating system via Java application programs. Other runtime environments may be included as well.

[0079] The memory 304 may further include one or more data storages 310 that the network computer 300 may utilize to store, among other things, applications 320 and / or other data. For example, the data storage 310 may be used to store information describing various capabilities of the network computer 300. This information may then be provided to another device or computer based on any of a variety of methods, including as part of a header during a communication or upon request. The data storage 310 may also be used to store social networking information, including address books, friend lists, aliases, or user profile information. The data storage 310 may include program code, data, algorithms, and the like, that a processor, such as the processor 302, uses to execute and perform operations, such as those described below. In one embodiment, at least a portion of the data storage 310 may be stored on another component of the network computer 300, including, but not limited to, a non-transitory medium within the processor-readable removable storage 336, the processor-readable non-removable storage 334, or any other computer-readable storage device within the network computer 300, or external to the network computer 300. Data storage 310 may include, for example, data models 314, display models 316, graph models 318, or source data 319. Data models 314 may store files, documents, versions, properties, metadata, data structures, or the like that represent one or more portions of one or more data models. Display models 316 may store display models. Systematic models 318 may represent memory used to store systematic models. Source data 319 may represent memory used to store databases or other data sources that contribute to the data underlying a data model, systematic model, or display model, or the like.

[0080] The applications 320 may include computer-executable instructions that, when executed by the network computer 300, may send, receive, or otherwise process messages (e.g., SMS, multimedia messaging service (MMS), instant message (IM), email, or other messages), audio, video to enable 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, and search programs. The applications 320 may include a data management engine 322, a display engine 324, a lineage engine 326, or web services 329, which may be configured to perform operations of the embodiments described below. In one or more of the various embodiments, one or more of the applications may be implemented as a module or component of another application. Additionally, in one or more of the various embodiments, the applications may be implemented as an operating system extension, module, plug-in, or the like.

[0081] Further, in one or more of various embodiments, the data management engine 322, the display engine 324, the lineage engine 326, or the web services 329, etc., can operate within a cloud-based computing environment. In one or more of various embodiments, these applications, and other applications, including the management platform, can be executed within virtual machines or virtual servers that can be managed within the cloud-based computing environment. In one or more of various embodiments in this context, applications can flow from one physical network computer to another within the cloud-based environment, depending on performance and scaling considerations that are automatically managed by the cloud computing environment. Similarly, in one or more of various embodiments, virtual machines or virtual servers dedicated to the data management engine 322, the display engine 324, or the web services 329, etc., can be automatically provisioned and decommissioned.

[0082] Also, in one or more of the various embodiments, the data management engine 322, the display engine 324, the lineage engine 326, or the web services 329, etc., may be located within virtual servers operating in a cloud-based computing environment rather than being tied to one or more particular physical network computers.

[0083] Additionally, network computer 300 may also include a hardware security module (HSM) 360 that provides additional tamper-proof measures for generating, storing and / or using security / cryptographic information, such as keys, digital signatures, passwords, passphrases, or two-factor authentication information. In some embodiments, a hardware security module may be used to support one or more standard public key infrastructures (PKIs), such as to generate, manage or store key pairs. In some embodiments, HSM 360 may be a standalone network computer, and in other examples, HSM 360 may be configured as a hardware card that may be installed in the network computer.

[0084] Also, in one or more embodiments (not shown), instead of a CPU, the network computer 300 may include an embedded logic hardware device, such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a programmable array logic (PAL), or a combination thereof, which may directly execute its embedded logic to perform operations. Also, in one or more embodiments (not shown), instead of a CPU, the network computer may include one or more hardware microcontrollers. In one or more embodiments, the one or more microcontrollers may directly execute their own embedded logic to perform operations, as well as access their own internal memory, such as a system on a chip (SOC), and their own external input and output interfaces (e.g., hardware pins or a wireless transceiver) to perform operations.

[0085] Exemplary Logical System Architecture 4 illustrates a logical architecture of a system 400 for interactive lineage analysis of data assets, according to one or more of various embodiments. In one or more of various embodiments, the system 400 can include various components, such as a data model 402, which can be made up 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 sheet object 422, and a sheet object 424.

[0086] In one or more of various embodiments, a visualization server computer, such as visualization server computer 116, can be configured to use a data model, such as data model 402, that represents information that can be used to generate visualizations. In some embodiments, the data model can also be used to manage other participants in the visualization system, including users or authors.

[0087] 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 that drive the data model. For example, data object 404 may represent a SQL RDBMS associated with a portion of an organization, and data object 406 may represent an API gateway to another information provider or another database.

[0088] In one or more of various embodiments, data objects 408, 410, or 412, etc., represent tables or table-like objects that one or more databases may provide. At this level of the data model, data objects may be considered to wrap or otherwise closely model entities provided by a database. Thus, in some embodiments, the characteristics or attributes of a table or database object may closely mirror its native representation in terms of attribute names, data types, table or column names, etc. For example, a data manager may "import" a database or table into the data model such that the imported object retains some or all of the functionality or attributes available in its native form.

[0089] In one or more of various embodiments, before the imported table objects can be used in a visualization, a data manager must perform or execute one or more operations that prepare the visualization or information to be consumed by a visualization creator. In this example, extract-transform-load (ETL) object 414 represents an ETL process that performs some processing on the information in table objects 410 and 412 before the information is available for visualization.

[0090] In one or more of various embodiments, a data source object, such as data source 416 or data source 418, represents data objects available to a visualization creator for incorporation into a visualization or other display model. In some embodiments, a data source object may provide a data curator with control to manage or otherwise shape information from a database (e.g., database 404 or database 406) made available to a visualization or visualization creator. For example, one or more tables in database 404 may contain sensitive information that an organization wants to exclude from a visualization. Thus, in some embodiments, a data curator may control how data is exposed from the underlying database by selecting mapping attributes from the table object to the data source object. In some embodiments, a data curator may select specific columns or attributes from the table object to be included in the data source. Also, in some embodiments, an attribute name (e.g., column name) in a table object may be mapped to a different name in a data source. For example, a table column named customer_identifier in a table object may be mapped to an attribute named "account number" in a data source. Additionally, in some embodiments, other transformations of the mapping may also be performed, such as data type conversion, aggregation, filtering, or joining. In some embodiments, large or complex transformations may be encapsulated in ETL objects, etc., while more simple or general transformations may be possible that do not use separate ETL objects.

[0091] In one or more of various embodiments, the edge 448 represents a mapping from the table object to the data source. In this example, the edge 448 may represent one or more data structures that map one or more attributes (e.g., columns) of the table object 408 to the data source 416. Thus, in some embodiments, the edge 448 provides or is associated with one or more mapping rules or instructions that determine what information from the table object 408 is available in the data source 416 and how the information from the table object 408 appears to a visualization creator.

[0092] In one or more of various embodiments, a workbook object 420 represents a data object that may be related to one or more user-level data objects, such as sheet object 422 or sheet object 424. In some embodiments, a visualization author can 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 sheets (e.g., sheet object 422 or sheet object 424). In some embodiments, a sheet object can include one or more visualizations, etc.

[0093] In one or more of various embodiments, the sheet object 422 or sheet object 424 may represent some or all of the information that may be provided to one or more interactive visualization applications that may be used by a user, a visualization engine that generates a report, or the like. In this example, the sheet object 422 or sheet object 424 may be considered to include or reference one or more of data, metadata, data structures, or the like that may be used to render one or more visualizations of information that may be provided by one or more databases. In some embodiments, a sheet may be configured to include one or more display models, styling information, textual descriptions, narrative information, stylized graphics, links to other sheets, or the like.

[0094] Thus, in some embodiments, a user, such as user 426 or user 428, can access a sheet. The content or visualizations in a sheet can depend on its design and on its underlying information (e.g., information from database 404 or database 406). Typically, a sheet or an included visualization can depend on one or more fields, nodes, columns, or the like from one or more databases. Similarly, in some embodiments, dependencies that may be related to a database can propagate through other data objects, such as tables, data sources, or workbooks. In some instances, other data objects that exist between the sheet and its underlying databases may introduce further dependencies that may propagate to the sheet or visualization.

[0095] In some embodiments, upstream changes to one or more data objects may affect one or more downstream sheets or visualizations. In some instances, the upstream changes may corrupt a sheet or visualization, so that a user or creator can easily understand that an upstream data object has changed based on an error message associated with the corrupted sheet or visualization. For example, if a visualization relies on an upstream field or attribute, deleting or renaming this attribute may result in an error identifying that the attribute has been lost.

[0096] However, in some embodiments, some or many upstream changes may have effects that may not be obvious to a user. For example, in some embodiments, an upstream change may modify the meaning or semantics of an attribute such that the meaning of the information changes, yet the visualization may still provide information that can be consumed without causing a system error. In this example, a user may not even realize that an upstream change has occurred, even though the visualization no longer produces correct results.

[0097] Similarly, in some embodiments, a data custodian who manages an organization's databases or other data objects may not be able to easily identify potential downstream impacts that may result from changes to the data objects or data models. For example, a data custodian may propose one or more changes to a database, but it may be difficult for the data custodian to estimate, verify, or confirm the potential impact such changes may have on downstream users.

[0098] Accordingly, in one or more of 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 provide lineage information that may be related to data model 402. In one or more of 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, or lineage object 446.

[0099] In one or more of the various embodiments, a lineage object can represent a type of data object that can be part of the same layer of a data model. In some embodiments, members of a layer of a data model can include data objects that can have the same or similar functionality or purpose. For example, lineage object 434 represents data objects that can be considered a database, such as data object 404 and data object 406. Also, for example, lineage object 436 can represent data objects that represent tables, such as data object 408, data object 410, data object 412; lineage object 438 can represent data objects that represent ETL operations, such as data object 414; lineage object 440 can represent data objects that represent data sources, such as data object 416, data object 418; lineage object 442 can represent data objects that represent workbooks, such as data object 420; and lineage object 444 can represent data objects that represent sheets, such as sheet data object 422, sheet data object 424. Additionally, in some cases, the lineage model can be configured to include lineage objects that represent one or more users, such as user 426 or user 428, that may be associated with a sheet or visualization.

[0100] In one or more of various embodiments, the lineage model can be configured to represent more or fewer classes of data objects. For example, in some embodiments, the lineage model can exclude lineage objects that represent users, such as lineage object 446, if the lineage engine is limited or otherwise unable to discern which users may be associated with a sheet.

[0101] In one or more of various embodiments, the lineage engine can be configured to automatically explore the data model 402 to determine its lineage objects based on data object classes or data model layers within the data model. In some embodiments, one or more data objects or data object classes within the data model can be excluded from the lineage engine or the lineage model for various reasons, such as security considerations. Thus, in some embodiments, the lineage engine can be configured to determine which lineage objects should be included in the lineage model using one or more rules, filters, or conditions provided via configuration information.

[0102] 5 illustrates a logical representation of a portion of an interactive graph-based data visualization system 500 that can be in accordance with one or more of the various embodiments. In this example, data model 502 can be considered similar to data model 402 described above for some embodiments. In this example, data object 506 represents a data object that a data manager may wish to modify. Thus, in this example, changes to data object 506 can affect various downstream data objects, such as data object 508, data object 510, data object 512, or data object 514. Also in this example, user 516 or user 518 can be a user that relies on or owns data object 512 or data object 514.

[0103] Also 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.

[0104] Thus, in some embodiments, when a lineage object in a lineage model is activated, the lineage engine can be configured to determine data objects in its corresponding data model (e.g., data model 502) that can depend on data objects associated with the activated lineage object.

[0105] In one or more of the various embodiments, when a lineage object can be activated, the lineage engine can be configured to determine the data objects of the data model that can be included in the data model layer that corresponds 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 a table layer in data model 502. Thus, in this example, the lineage engine can determine some or all of the data objects in data model 502 that can be associated with the table layer.

[0106] In some embodiments, if data objects related to a lineage object can be determined, the lineage engine can determine one or more anchor data objects based on one or more rules, which can be provided by configuration information, user input, or the like. For example, in some embodiments, the configuration information can include rules that automatically select one or more data objects (e.g., the data object most recently accessed, or the first data object in a sorted list, etc.). Also, 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 manager can select data object 506 because it may be related to one or more pending modifications.

[0107] In one or more of the various embodiments, when the anchor data object is determined, the lineage engine can be configured to initiate a search of the data model to determine lineage information, including dependency information, based on the anchor data object.

[0108] In one or more of various embodiments, the lineage engine can be configured to determine various information regarding data objects that may be associated with one or more lineage objects. In some embodiments, the lineage engine can be configured to determine a number of data objects that may be associated with a data model layer that may be associated with each lineage object. For example, in some embodiments, the lineage engine can associate one or more lineage objects with a number of data objects that are associated with a given lineage object. In other embodiments, the lineage object can include information that identifies one or more restricted data objects in the data model, or the like. For example, if the data model 502 included restricted table data objects (not shown), the lineage object 522 can be configured with a property that allows such information to be stored.

[0109] 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 aggregate data model layer information. For example, if the data model 502 included one or more table data objects (not shown) that were configured to be inaccessible to a data curator, then the one or more table data objects can be excluded or otherwise distinguished from the data objects that the data curator can view or modify.

[0110] In one or more of various embodiments, the lineage engine can be configured to generate a lineage model that explores dependencies of data objects based on the activated lineage objects. Additionally, in some embodiments, the lineage engine can be configured to further refine the dependency exploration based on one or more data objects that can be designated as anchor data objects. For example, data object 506 can be considered activated if data object 506 is an anchor data object because it exists in a data model layer that corresponds to lineage object 522 (e.g., a data object class table). Thus, in some embodiments, the lineage engine can be configured to perform a search of the data model that tracks dependencies associated with anchor data objects based on the location of the anchor data object within the data model rather than searching the entire data model.

[0111] In this example, if data object 506 is the anchor data object, the lineage engine can determine a dependency path associated with data object 506. Here, this path within data model 502 is shown using bold / thickened 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 the activated data model layer.

[0112] 6 illustrates a logical overview of a lineage object 600, which represents a data structure for managing lineage information, in accordance with one or more of various embodiments. In some embodiments, the lineage object can be configured to include various information that may be associated with data objects that may be associated with the lineage object. In some embodiments, the lineage engine can be configured to determine the particular information to collect and include in the lineage object based on configuration information, etc.

[0113] In one or more of the various embodiments, the lineage object may include various properties that can be used to store information related to, or references to information about, one or more data objects associated with a data model layer. In this example, for some embodiments, the lineage object 600 includes properties such as an identifier property 602, a layer property 604, an object count property 606, an excluded object count property 608, or a filter property 610.

[0114] In some embodiments, a tier property, such as property 604, may include an identifier (e.g., an ID, reference number, pointer, label, tag, etc.) that indicates which tier of the data model the lineage object represents. In this example, property 604 has a value of "table", indicating that the lineage object may be associated with a table tier of the data model. Similarly, property 604 may have a value of "data source", for example, to indicate that the lineage object may be associated with a "data source" tier of the data model. Alternatively, in some embodiments, a data object class property (not shown) may be included rather than or in addition to tier property 604.

[0115] In one or more of various embodiments, a lineage object can be configured to have one or more properties of aggregated information values, such as a count, average, or sum. In this example, property 606 can store a value representing the number of data objects that may be related to this lineage object. Similarly, in this example, property 608 can store a value representing the number of data objects in the "table" layer that were excluded from the object count of property 606. In some embodiments, one or more data objects can be excluded for various reasons, including data objects that may be hidden or otherwise inaccessible to a data manager, or data objects that may be excluded based on a filter or other configuration. Also, in this example, property 610 can store filter information or a reference to filter information that the lineage engine can apply.

[0116] 7 illustrates a logical schematic diagram of a portion of a system 700 illustrating dependencies within a data model in accordance with one or more of various embodiments. In this example, system 700 includes data object 702, data object 704, data object 706, or data object 708. Also in this example, system 700 includes a portion of a lineage model including lineage object 710, lineage object 712, lineage object 714, or lineage object 716.

[0117] As discussed above, in one or more of the various embodiments, data objects in a data model can 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 the data objects in this example are all part of the same dependency tree, with data object 702 as the root, there can be other data objects in the same data model that have different or alternative dependency graphs.

[0118] In one or more of various embodiments, a data object in a data model may depend on another data object by virtue of the data object's dependency on one or more attributes of the other data object. In FIG. 7, attribute-level dependencies between data objects are represented by lines connecting columns in a data object to other columns in the data object. Thus, in this example, data object 702 has five columns that can be considered as five attributes. In this example, the line connecting data object 702 to data object 704 represents data object 704's dependency 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. 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 parents, although dependencies between data objects may be based on less than all attributes. For example, line 718 represents the dependency of data object 708 on one field or attribute of data object 706 .

[0119] In some embodiments, dependencies between attributes or data objects in general may depend on one or more functions, filters, transformations, etc. that can be applied to attribute values ​​that are propagated to descendent data objects. For example, a table data object may include a timestamp attribute that is stored as a Unix epoch timestamp. However, in this example, the dependent data source may also have an attribute labeled Date that expects a conventional date representation that is not a Unix epoch timestamp. Thus, in this example, the date attribute of the dependent data source may be associated with a transformation operation that converts the Unix epoch timestamp value provided by the parent table into a conventional date value that meets the requirements of the data source.

[0120] Also, in this example, lineage model 710 may be considered to correspond to a data model layer “table” (not shown) that contains data object 702, lineage model 712 may be considered to correspond to a data model layer “data source” (not shown) that contains data object 704, lineage model 714 may be considered to correspond to a data model layer “workbook” (not shown) that contains data object 706, and lineage model 716 may be considered to correspond to a data model layer “sheet” (not shown) that contains data object 708.

[0121] 8A illustrates a logical schematic diagram of a portion of a system 800 illustrating dependencies within a data model, according to one or more of various embodiments. In this example, system 800 can be considered similar to system 700 described above. In this example, for some embodiments, system 800 includes data object 802, data object 804, data object 806, and data object 808.

[0122] In one or more of various embodiments, a lineage object in a lineage model can be related to an anchor data object. Thus, in some embodiments, the 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 the anchor data object, lineage object 810 can be activated. Also in this example, for some embodiments, the lineage engine can be configured to perform a search of the data model to determine that data object 808 is dependent on data object 806, data object 804, and data object 802.

[0123] In one or more of the various embodiments, the lineage engine can be configured to determine dependencies by searching the data model to determine attributes of the data objects that may depend on attributes or other data objects. In this example, the lineage engine can determine that attribute 812 of data object 808 depends on attribute 814 of data object 802.

[0124] Thus, in one or more of various embodiments, the attribute-level dependency analysis enables the lineage engine to determine which data objects may be affected by modification of individual attributes. In this example, for some embodiments, the lineage analysis may identify that attribute 816 of data object 802 can be modified without affecting data object 808.

[0125] 8B illustrates a logical schematic diagram of a portion of a system 800 illustrating data model dependencies, according to one or more of various embodiments. In this example, system 800 can be considered similar to system 700 described above. In this example, for some embodiments, system 800 includes data object 802, data object 804, data object 806, and data object 808.

[0126] In this example, lineage object 818 may be considered the activated lineage object (indicated by the bold line weight), and data object 802 may be considered the anchor data object. Thus, in this example, the lineage analysis performed by the lineage engine may 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 may not be affected by the modification of attribute 816 because none of data object 808's attributes are directly or indirectly dependent on attribute 816.

[0127] Similarly, in this example, lineage object 810 may be deactivated (indicated by the normal line weight) because lineage object 818 is the activated lineage object.

[0128] 9 illustrates a logical schematic diagram of a portion of a user interface 900 of an interactive lineage analyzer for data assets, according to 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 of the data objects that may be associated with the data model layer that may 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, once the anchor data object is determined, the lineage engine can perform a lineage analysis based on the anchor data object.

[0129] In this example, the user interface 900 can be configured to display a lineage model in a lineage panel 902. Thus, in some embodiments, the lineage panel 902 can be configured to display one or more lineage objects, such as lineage object 904. Also, in some embodiments, a lineage object associated with the lineage panel 902 can be displayed along with some or all of the lineage information that may be associated with data objects associated with the data model layer that corresponds to the given lineage object. In this example, the lineage object 904 is shown using a thick weighted line to indicate that it is activated.

[0130] Additionally, in one or more of the various embodiments, lineage information for the lineage objects, such as lineage information 906, may be displayed along with the lineage model. In this example, the lineage information 906 is displayed adjacent or otherwise proximate to the corresponding lineage object. As discussed above, the lineage information may include information related to data model layers or data objects that may be associated with the lineage object. In this example, the lineage information includes basic information such as name, label, or data object count. In one or more of the various embodiments, the lineage engine may be configured to determine the lineage information to display based on defaults or user selections obtained from configuration information.

[0131] 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 that may be associated with one or more data model layers. Thus, in some embodiments, when a lineage object can be activated, the lineage engine can be configured to determine one or more data objects that may be associated with the data model layer associated with the activated lineage object, such that these data objects can be displayed in an object panel, such as object panel 908.

[0132] 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, such as for scrolling or paging, to manage the display of the data objects. Additionally, in some embodiments, the set of data objects displayed may be influenced by one or more filters or constraints, such as may reflect user selections or system-wide configurations that may be obtained from configuration information.

[0133] As described above, in one or more of various embodiments, the activated lineage object may correspond to a data model layer that corresponds to a data object class. However, in some embodiments, one or more data model layers may be associated with many data objects. Thus, in some embodiments, one or more of the data objects may be designated as anchor data objects. For example, if object 906 represents some or all of a data source in a data model, data object 912 may represent the designated anchor data object.

[0134] In one or more of the various embodiments, the lineage engine can be configured to perform a lineage analysis, which can include searching the data model using the activated lineage objects and the specified anchor data objects, to determine one or more dependencies between data objects in the data model.

[0135] General operation 10-12 depict general operations for interactive lineage analysis of data assets according to one or more of various embodiments. In one or more of various embodiments, the processes 1000, 1100, and 1200 described in conjunction with FIGS. 10-12 may be implemented or performed by one or more processors on a single network computer, such as network computer 300 of FIG. 3. In other embodiments, these processes, or portions thereof, may be implemented or performed by multiple network computers, such as network computer 300 of FIG. 3. In still other embodiments, these processes, or portions thereof, may be implemented or performed by one or more virtual computers, such as in a cloud-based environment. However, the embodiments are not so limited and various combinations of network computers, client computers, and the like, may be utilized. Furthermore, in one or more of various embodiments, the processes described in conjunction with FIGS. 10-12 may be used for interactive lineage analysis of data assets according to at least one of the various embodiments or architectures as described in conjunction with FIGS. 4-9. Further, in one or more of the various embodiments, some or all of the operations performed by processes 800, 900 and 1000 may be performed in part by the data management engine 322, the display engine 324 or the lineage engine 326 running on one or more processors of one or more networked computers.

[0136] 10 depicts a simplified flowchart of a process 1000 for interactive lineage analysis of data assets, according to one or more of the various embodiments. After a start block, in one or more of the various embodiments, at start block 1002, a data model may be provided to a lineage engine. As discussed above, a data management engine, display engine, or the like, may be configured to generate a data model that can be used by a visualization creator or data curator to create data objects that may be related to various data model layers or data object classes within the data model.

[0137] At block 1004, in one or more of the various embodiments, the lineage engine can be configured to determine a lineage model based on the data model. In one or more of the various embodiments, the lineage engine can be configured to examine characteristics of the data model by performing various operations, such as traversing the data model, examining schema information, or performing one or more queries or searches. In some embodiments, the lineage engine can be configured to determine information for generating the lineage model from configuration information, etc.

[0138] In one or more of the various embodiments, the lineage engine can be configured to display the lineage model in an interactive lineage panel at block 1006. As described above, the display engine can generate a user interface that includes the interactive lineage panel.

[0139] At block 1008, in one or more of the various embodiments, the lineage engine can 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 can be configured to perform a search of the data model to determine one or more data objects associated with the activated lineage object. In some embodiments, the search can include a direct traversal of the data model. In other embodiments, the lineage engine can be configured to perform a query against a database in which the data model can be stored. For example, in some embodiments, if the data model is stored in a graph-based database, the search can be performed by executing a graphQL or graphQL-like query to determine one or more data objects associated with the activated lineage object.

[0140] At block 1010, in one or more of the various embodiments, the display engine may be configured to display one or more data objects in an object panel.

[0141] At 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.

[0142] In one or more of the various embodiments, the lineage engine may be configured to generate one or more impact reports that include information related to the determined dependencies, at block 1014. For example, if a data manager is evaluating the impacts 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 impending modification.

[0143] In some embodiments, the impact report may also be configured to include contact information for one or more users that may be affected by the modification. For example, the visualization server computer may be configured to maintain associations as to which users may respond to or otherwise rely on one or more sheets or workbooks in the data model. In some embodiments, the data model may include relationships between users and data objects.

[0144] In one or more of the various embodiments, the impact report may include automatically providing a notification to a user regarding the impact of a modification to the data model.

[0145] Control may then be returned to the calling process in one or more of the various embodiments.

[0146] 11 illustrates a flowchart of a process 1100 for interactive lineage analysis of data assets in accordance with one or more of the various embodiments. After a start block, in one or more of the various embodiments, at start block 1102, a display engine may be configured to display the lineage model in a lineage panel on a user interface. As described above, the 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.

[0147] In one or more of various embodiments, some or all of the lineage objects can be displayed in an interactive lineage panel. Thus, in some embodiments, a user can easily figure out which lineage objects correspond to which data model layers. Additionally, in one or more of various embodiments, the lineage panel can be configured to display some or all of the layer information that may be associated with the lineage objects, such as the layer's name / label or data object count.

[0148] At decision block 1104, in one or more of various embodiments, if the lineage object can be activated, control may proceed to block 1106, otherwise control may return to block 1102. In some embodiments, the lineage panel may be configured to allow a user to activate the lineage object by selecting it using a touch interface, a pointing device, a hotkey, or the like.

[0149] 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.

[0150] Additionally, in some embodiments, the lineage panel can be configured to automatically stylize the appearance or limit the interactivity of one or more lineage objects based on the role or rights of the current user. For example, if a user does not have permission to access the database layer of the data model, then the lineage object that corresponds to the database layer of the data model can be stylized to not respond to user input such as clicking, touching, or hovering.

[0151] At block 1106, in one or more of the various embodiments, the lineage engine can be configured to determine the data model layer based on the activated lineage object. As described above, a lineage object in a lineage model can be associated with a data model layer. Thus, in some embodiments, when a lineage object is activated, the lineage engine can be configured to determine the corresponding data model layer based on the activated lineage object. For example, in some embodiments, a data structure used to represent a lineage object can include a property that stores an identifier or a reference to its corresponding data model layer.

[0152] At block 1108, in one or more of various embodiments, the lineage engine can be configured to determine one or more data objects based on the data model layer. In some embodiments, the lineage engine can be configured to search the data model to find data objects for a particular data model layer. In some embodiments, the lineage engine can be configured to maintain one or more indexes or caches that can be used to directly determine data objects for a data model layer, rather than searching the data model in real time.

[0153] Additionally, in one or more of the various embodiments, the data model may be represented or stored in a graph-based database. Accordingly, 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 their membership in a data object class corresponding to an activated lineage object or their relevance to the data model layer.

[0154] Furthermore, in some embodiments, if the data model is a graph model, the lineage engine can be configured to perform searches by directly traversing the data model.

[0155] At block 1110, in one or more of various embodiments, the display engine may be configured to display one or more data objects in an object panel. As described above, the display engine may be configured to display representations of data objects associated with the data model layer that corresponds to the activated lineage object. In some embodiments, there may be more data objects to display than can be displayed at one time. Thus, in some embodiments, the display engine may be configured to provide scrolling or paging user interface controls to allow a user to view the data objects.

[0156] In one or more of the various embodiments, the display engine can be configured to generate an object panel that includes a search control that can be used to filter the data objects that can be displayed in the object panel.

[0157] In one or more of various embodiments, the systematic engine or display engine can be configured to sort the display order of the data objects in the object panel based on a sort order that can be determined based on configuration information.

[0158] In decision block 1112 , if the interaction session can be ended, control can be returned to the calling process, otherwise control can be returned to block 1102 .

[0159] In one or more of various embodiments, the display engine and the lineage engine can be configured to cooperate 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 lineage engine can quickly prepare another lineage object to be activated. Also, in some embodiments, the display engine or lineage engine can be configured to determine one or more data objects to display in the object panel in response to one or more subsequently activated lineage objects.

[0160] In one or more of the various embodiments, the process 1100 may terminate on command and return control to the calling process.

[0161] 12 illustrates a flow chart of a process 1200 for determining interactive lineage analysis dependencies of data assets, according to one or more of the various embodiments. After a start block, at start block 1202, in one or more of the various embodiments, a lineage engine can be configured to determine one or more anchor data objects. As discussed above, in some embodiments, the lineage engine can be configured to perform a data object search to determine one or more data objects that may be related to an activated lineage object.

[0162] In one or more of various embodiments, one or more of the data objects associated with an activated lineage object may be designated as an anchor data object. In some embodiments, the lineage engine may be configured to automatically designate the anchor data object 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, in some embodiments, the lineage engine may be configured to automatically designate the anchor data object based on one or more characteristics of the data object, such as age, recency of access (e.g., the object most recently designated as the anchor object may be the default), frequency of access, or user selection. In some embodiments, the lineage engine may be configured to obtain default rules for designating the anchor data object from configuration information.

[0163] In some embodiments, anchor data objects may be designated by another process or service. For example, a data management engine or a display engine may be configured to provide references or identifiers of data objects that may be designated as anchor data objects based on various conditions, including user interaction.

[0164] In one or more of the various embodiments, the lineage engine may also be configured to designate anchor data objects based on input provided by a data curator or the like.

[0165] In one or more of the various embodiments, the lineage engine can be configured to determine one or more anchor attributes included in the anchor data object at block 1204. As described above, a data object can be configured to include one or more attributes that can depend on one or more attributes of another data object.

[0166] In one or more of various embodiments, the lineage engine can be configured to perform various operations to determine the anchor attribute. In some embodiments, one or more data objects can have pre-assigned anchor attributes that can automatically determine whether the data object can be designated as an anchor data object. In some embodiments, the anchor data object can include an attribute that can be automatically designated by the lineage engine. In some embodiments, a user can directly select the anchor attribute from among some or all of the attributes of the anchor data object.

[0167] In one or more of various embodiments, the lineage engine can be configured to automatically determine the anchor attribute based on which attribute of the data object may be related to the longest dependency chain or path in the data model. Further, in some embodiments, the lineage engine can be configured to select the anchor attribute based on how frequently it has been designated as an anchor attribute in the past.

[0168] In one or more of the various embodiments, the lineage engine may be configured to search the data model to determine dependency information based on the anchor attribute at block 1206. 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 attributes that may be dependent on other data objects in the data model.

[0169] In one or more of various embodiments, the data model may be a graph model configured such that relationship information, represented by edges between nodes, may contain detailed information that may identify one or more attributes that comprise the relationships between the data objects. Thus, in some embodiments, a data object may depend on another data object based on at least one attribute of the data object that depends on one or more attributes of the other data object.

[0170] In one or more of various embodiments, the lineage engine may be configured to perform one or more graph traversals using conventional graph traversal methods, such as a depth first search or a breadth first search.

[0171] In one or more of the various embodiments, a graph-based database system may be used to represent the data model. 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 dependent data objects based on attribute relationships of the data objects in the data model.

[0172] In one or more of the various embodiments, the lineage engine can be configured to determine lineage information that includes at least the dependency information determined by the search, at block 1208. In one or more of the various embodiments, the lineage information based on attribute dependencies can provide an improved view of the potential impact of changes to the data model.

[0173] In some embodiments, if a proposed change is to a rarely used attribute, the impact of the change may be smaller than would appear if the lineage analysis were limited to object-level dependencies. For example, in some embodiments, even if a table data object has relationships between many dependent data objects, only a small portion of the dependent data objects may actually depend on one or more of the attributes being considered for modification. Thus, in some embodiments, attribute dependency information may provide a more accurate view of the impact associated with the modification under consideration.

[0174] Control may then be returned to the calling process in one or more of the various embodiments.

[0175] It will be understood that each block of each flowchart diagram, and combinations of blocks in each flowchart diagram, can be implemented by computer program instructions. These program instructions can be provided to a processor to produce a machine such that the instructions, executed on the processor, produce means for performing the operations shown in one or more of the flowchart blocks. These computer program instructions can also be executed by a processor such that a sequence of operational steps performed by the processor produces a computer-implemented process such that the instructions, executed on the processor, provide steps for performing the operations specified in each flowchart block. These computer program instructions can also cause at least some of the operational steps shown in each flowchart block to be performed simultaneously. Furthermore, some of the steps can be performed across multiple processors, such as in a multi-processor computer system. Also, one or more blocks or combinations of blocks in each flowchart diagram can be executed simultaneously with other blocks or combinations of blocks, or in a different order than that shown, without departing from the scope or spirit of the invention.

[0176] Thus, each block of each flowchart diagram supports a combination of means for performing the specified operations, a combination of steps for performing the specified operations, and a program instruction means for performing the specified operations. It will also be understood that each block of each flowchart diagram, and combinations of blocks of each flowchart diagram, can also be performed by a dedicated hardware-based system that performs the specified operations or steps, or a combination of dedicated hardware and computer instructions. The above-described examples should not be construed as limiting or exhaustive, but rather are use cases illustrating the implementation of at least one embodiment of the various embodiments of the present invention.

[0177] Additionally, in one or more embodiments (not shown), an embedded logic hardware device, such as an application specific integrated circuit (ASIC), field programmable gate array (FPGA), programmable array logic (PAL), or the like, or a combination thereof, may be used in place of a CPU to execute the logic of the exemplary flow charts. The embedded logic hardware device may directly execute embedded logic to perform operations. In one or more embodiments, the microcontroller may be configured to directly execute its own embedded logic to perform operations, as well as access its own internal memory, such as a system on chip (SOC), and its own external input and output interfaces (e.g., hardware pins or a wireless transceiver) to perform operations. [Explanation of symbols]

[0178] 400 Systems 402 Data Model 404 Database Object 406 Database Objects 408 Table Object 410 Table Object 412 Table Object 414 Workflow Objects 416 Data Source Objects 418 Data Source Object 420 Workbook Objects 422 Sheet Objects 424 Sheet Objects 426 users 428 users 430 ? 432 System Model 434 Lineage Objects 436 Lineage Objects 438 Lineage Objects 440 Lineage Objects 442 Lineage Objects 444 Lineage Objects 446 Lineage Objects 448 Edge

Claims

1. 1. A method for managing data using a computer including one or more processors, each step of the method being performed by the one or more processors, the method comprising: providing a data model having one or more layers, the data model including a plurality of data objects associated with the one or more layers; providing an architecture model including one or more architecture objects each associated with one of the one or more data model layers; activating one of the one or more lineage objects based on an association with one of the one or more data model layers; determining a first portion of the plurality of data objects that are associated with a same tier as the activated lineage object based on the data model and the activated lineage object; determining an anchor data object from the first portion of the data object based on one or more characteristics representative of the first portion of the data object; using a search of the data model to provide dependency information within the data model based on a location of the anchor data object within the data model; determining a second portion of the plurality of data objects based on the dependency information; and providing a report including one or more of the list of the second portions of data objects or the dependency information; The method according to claim 1, further comprising:

2. Determining the dependency information comprises: 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; providing the dependency information based on one or more relationships associated with the plurality of data objects in the data model, or based on the one or more attributes and the one or more other attributes; The method of claim 1 further comprising:

3. in response to a modification of one or more of the plurality of data objects; determining the activated lineage object based on the one or more modified data objects; determining the anchor data object based on the one or more modified data objects; determining one or more users associated with the modification based on the dependency information, each user being associated with one or more data objects affected by the modification; providing one or more notifications to each user based on each affected data object associated with said user; The method of claim 1 , further comprising performing further actions including:

4. generating a graphical user interface (GUI) including a lineage panel and an object panel; displaying the system model and the one or more system objects in the system panel; displaying the first portion of the data object in the object panel; determining another lineage object to be activated based on one or more inputs to the lineage panel; automatically determining a different portion of the plurality of data objects to be displayed within the object panel based on the different activated lineage object; instantiating a display engine to perform the operations including: The method of claim 1.

5. determining the second portion of the data object further includes modifying the second portion of the data object according to one or more filters displayed in the lineage panel. The method according to claim 4.

6. providing one or more data object classes based on the data model, the data object classes including one or more of a database, a table, a data source, a workbook, or a sheet; associating each layer of the data model with one of the one or more data object classes; wherein each data object is associated with a data object class corresponding to a data object class associated with the tier; The method of claim 1.

7. Providing the dependency information comprises: generating query information based on the data model and the anchor data objects; using the query information to execute a query that provides the dependency information; The method of claim 1 further comprising:

8. A network computer for managing data, comprising: a transceiver for communicating over the network; a memory for storing at least instructions; one or more processors; wherein the one or more processors: providing a data model having one or more layers, the data model including a plurality of data objects associated with the one or more layers; providing an architecture model including one or more architecture objects each associated with one of the one or more data model layers; activating one of the one or more lineage objects based on an association with one of the one or more data model layers; determining a first portion of the plurality of data objects that are associated with a same tier as the activated lineage object based on the data model and the activated lineage object; determining an anchor data object from the first portion of the data object based on one or more characteristics representative of the first portion of the data object; using a search of the data model to provide dependency information within the data model based on a location of the anchor data object within the data model; determining a second portion of the plurality of data objects based on the dependency information; and providing a report including one or more of the list of the second portions of data objects or the dependency information; Executing instructions to perform operations including:

1. A network computer comprising:

9. Determining the dependency information 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; providing the dependency information based on one or more relationships associated with the plurality of data objects in the data model, or based on the one or more attributes and the one or more other attributes; 9. The network computer of claim 8, further comprising:

10. The one or more processors: in response to a modification of one or more of the plurality of data objects; determining the activated lineage object based on the one or more modified data objects; determining the anchor data object based on the one or more modified data objects; determining one or more users associated with the modification based on the dependency information, each user being associated with one or more data objects affected by the modification; providing one or more notifications to each user based on each affected data object associated with said user; Executing instructions to perform operations further including:

9. The network computer of claim 8.

11. The one or more processors: generating a graphical user interface (GUI) including a lineage panel and an object panel; displaying the system model and the one or more system objects in the system panel; displaying the first portion of the data object in the object panel; determining another lineage object to be activated based on one or more inputs to the lineage panel; automatically determining a different portion of the plurality of data objects to be displayed within the object panel based on the different activated lineage object; executing instructions to perform operations further including instantiating a display engine to perform the operations including:

9. The network computer of claim 8.

12. determining the second portion of the data object further includes modifying the second portion of the data object according to one or more filters displayed in the lineage panel.

12. The network computer of claim 11.

13. The one or more processors: providing one or more data object classes based on the data model, the data object classes including one or more of a database, a table, a data source, a workbook, or a sheet; associating each layer of the data model with one of the one or more data object classes; wherein each data object is associated with a data object class that corresponds to a data object class associated with the tier; 9. The network computer of claim 8.

14. Providing the dependency information comprises: generating query information based on the data model and the anchor data objects; using the query information to execute a query that provides the dependency information; 9. The network computer of claim 8, further comprising:

Citation Information

Patent Citations

  • Visualizing relationships between data elements

    US20100138420A1

  • Information management system

    US20170161188A1

  • Computing data lineage across a network of heterogeneous systems

    US20190188308A1