Lineage Troubleshooting
This page documents the known problems with lineage and the steps to resolve them. Each section describes a symptom, its cause, and the resolution. Most of these fail quietly rather than with an error, so the symptom is what you have to go on.
Getting Lineage at All
The Lineage Tab Is Not There
The container or datastore page has no Lineage tab, and a saved link to one opens the Overview instead.
Cause: Lineage is an add-on and it is not enabled for the deployment.
Resolution: Ask an Admin to enable it from the Add-ons side panel in the top-right menu. See Permissions.
A Datastore's Lineage Map Is Empty
A datastore's Lineage tab reads No lineage in this datastore.
Cause: None of the datastore's containers has a connection yet. Lineage appears once a Sync collects it, a data catalog imports it, or a computed table or file is created.
Resolution: Ask whoever manages the datastore to turn on Collect lineage for its Sync or connect a data catalog that publishes lineage, or ask a Manager to add the connections by hand. If collection is already on, the entries below explain why it can come back empty. See Lineage Sources for every way a connection is created.
Collect Lineage Made No Difference
A Sync started through the API with collect_lineage set finished without error, and nothing about lineage changed.
Cause: The datastore type has no collector. Collection reads Snowflake, BigQuery, Databricks, and Oracle, and every other type ignores the option rather than failing on it. In the sync settings and in a Flow's Sync action, the option cannot be selected for these types and reads "Lineage collection is not supported for this connector".
Resolution: For other datastores, import lineage from a data catalog or add the connections by hand. See Lineage Sources.
The Sync Succeeded and No Connections Appeared
The datastore is one of the four that support collection, the option was on, and the graph is still empty.
Cause: Usually the connection Qualytics uses cannot read the relations the collection depends on. Each datastore type exposes its history and its view definitions through specific relations, and reading those is a grant of its own, separate from reading the tables themselves.
Resolution: Check the connection's access against the relations listed under What Each Datastore Exposes, then collect again. On Oracle, the grants are listed under Permissions for Lineage Collection. If access is in order, the other explanation is that the source recorded nothing to read: an account that has been quiet, or tables that have not been written since the history begins.
Only Part of the Graph Came Back
Some tables have a full upstream chain and others have nothing, with no obvious pattern.
Cause: History reaches back only as far as the source retains it, and a run observes only relationships that were exercised inside the window it read. A table written monthly leaves nothing in a window covering a week. On Oracle the window is shorter still: the database only holds recently run statements, and drops them on a restart or under memory pressure.
Resolution: Turn Collect lineage on for the scheduled Sync rather than running it once. Each run adds what it sees to what is already recorded, so the graph fills in over the weeks instead of having to be complete on the first attempt.
A Databricks Datastore Collects Less Than Expected
Collection works, but the same setup on another Databricks datastore returns noticeably more.
Cause: A datastore on hive_metastore has no recorded lineage of its own. It falls back to parsing statement text from the query history, and reads view definitions with SHOW CREATE TABLE.
Resolution: Expect a thinner graph there than on a Unity Catalog datastore, and fill the gaps from a data catalog or by hand.
Reading the Graph
Some Nodes Have a Dashed Border
A node is drawn dashed and dimmed, nothing opens when you click it, and it has no fields to expand.
Cause: Nothing is wrong. It is an asset the source named in a relationship but that is not registered in Qualytics, shown under the name the source spelled it with. Qualytics keeps the connection as long as the other side resolves to a container.
Resolution: If the asset matters, register the datastore or table that holds it and collect again. The next run replaces the external side with the container instead of adding a second connection beside it. Right-click and Copy Name to take the full name as the source spells it.
Expand All Stopped Before the End of the Chain
Expand all loaded a long stretch of the graph and then stopped, although more clearly exists.
Cause: Expand all follows a direction to its end, up to 20 steps out from the node it was clicked on. A chain longer than that is not loaded in one action.
Resolution: Click Expand all again from a node at the edge of what loaded, which starts a new count from there. The count row on each card, ← N upstream • M downstream →, tells you how much is still out there: hover it to see how many are not on the canvas. A + N more card at the edge means more neighbors are waiting there. Use Show more or Pick from list on it. See Show More Neighbors.
The Graph Feels Cluttered After Expanding
Nodes overlap or sit far from the ones they connect to, and the layout is hard to follow.
Cause: Each expansion adds nodes around the existing arrangement rather than recomputing it from scratch, so the layout drifts as the graph grows.
Resolution: Use the toolbar's Reorganize action to re-apply the default layout. Expanding cannot be undone, so reload the Lineage tab to get back to the starting view. To grow a busy side without drawing everything, use Pick from list on its + N more card and add only the neighbors you need. See Tips & Tricks.
A Count Ends With a Plus Sign
A number on a card, a map footer or an impact analysis tile reads like 1K+ or 40+.
Cause: Counting stopped before the end, because the chain is very large or very long. The tooltip on a card's count row says where it stopped: Counting stopped at 1,000, or Counting stopped 20 steps back (or ahead).
Resolution: Nothing is wrong. Read the number as "at least this many". To see what lies past it, expand from a card further along, or run an impact analysis from a container closer to the part you care about.
Impact Analysis Says There Are More
The impact analysis list shows Showing the nearest 1,000. There are more. or Showing assets up to 20 steps away. There are more.
Cause: The result is very large, so the list stops at the nearest 1,000 assets or at 20 steps away.
Resolution: Click an asset in the list to run the analysis from there, which starts a new count. The export follows the same limit. See Impact Analysis.
Search Does Not Find a Container in Another Datastore
On a datastore's Lineage tab, Search assets does not find a container you know is connected.
Cause: Search covers the containers of this datastore that have lineage, plus whatever is already on screen. A container of another datastore is found only once it is drawn. On a container's Lineage tab, search covers only the cards on screen.
Resolution: Open the other datastore's Lineage tab and search there, or expand the graph until the container is drawn.
Changing Connections
A Connection Came Back After I Deleted It
The connection disappeared when deleted and was there again later.
Cause: Deleting removes the connection, not the thing that produces it. A data catalog connection returns on the next sync of that data catalog, a collected one returns the next time the relationship is observed, and a Qualytics managed one returns when the computed container is saved or the table is written again.
Resolution: Remove the relationship where it is produced. Only a manual connection stays deleted on its own. See Deleting Is Not Limited to Manual Connections.
A Relationship That No Longer Exists Is Still in the Graph
A pipeline was decommissioned weeks ago and its connections are still drawn.
Cause: Collected connections are never removed automatically. History can show that a relationship happened and can never show that one stopped, so a run that does not see it again proves nothing and changes nothing.
Resolution: Delete it from the container's lineage. Since nothing will observe a relationship that has genuinely ended, it stays deleted.
Adding, Editing, or Deleting Is Refused
On a container's own lineage, the node's menu offers Copy Name but no Add upstream or Add downstream, and hovering a connection's badge reveals no Delete.
Cause: Changing lineage requires the Manager role. A Member can read the whole graph, and the controls are hidden rather than shown and refused. On a datastore's Lineage tab the controls are missing for every role: see There Is No + Button on the Datastore Canvas.
Resolution: Ask a Manager or an Admin to make the change. See Permissions.
There Is No + Button on the Datastore Canvas
On a datastore's Lineage tab, cards have no + to add a connection, field lists offer no add option, and hovering a connection's badge shows no Delete.
Cause: The datastore map, the lineage between two datastores and the all-containers canvas are read-only, for every role.
Resolution: Click Open this table's lineage on the card to open that container's lineage, or go to the container's own Lineage tab. The add and delete controls are there for users with the Manager role. See Where You Edit.