As of April 10, 2026, Dataplex Universal Catalog is now called Knowledge Catalog. The API, client library, CLI, and IAM names remain unchanged. For more information, seeIntroducing the Google Cloud Knowledge Catalog.
View data lineage for Google Cloud systemsStay organized with collectionsSave and categorize content based on your preferences.
View data lineage to understand the relationships between your
project's resources and the processes that created them. These relationships
show how data assets, such as tables and datasets, are transformed by processes
like queries and pipelines. This guide describes how to view data lineage details
in the Google Cloud console or retrieve them by using the Data Lineage API.
Roles and permissions
Data lineage tracks lineage information automatically when
you enable theData Lineage API. You don't
need any administrator or editor roles to capture lineage for your data assets.
To view data lineage, you need specific Identity and Access Management
(IAM) permissions. Lineage information is captured across projects, so you need
permissions in multiple projects.
When viewing lineage in Knowledge Catalog, BigQuery, or
Vertex AI: you need permissions to view lineage information in the
project where you are viewing it.
When viewing lineage that was recorded in other projects: you need
permissions to view lineage information in those projects where it was
recorded.
To get the permissions that
you need to view data lineage,
ask your administrator to grant you the
following IAM roles:
Data Lineage Viewer(roles/datalineage.viewer)
on the project where lineage is recorded, and the project where lineage is viewed
View BigQuery table details:BigQuery Data Viewer(roles/bigquery.dataViewer)
on the table's storage project
View BigQuery job details:BigQuery Resource Viewer(roles/bigquery.resourceViewer)
on the job's compute project
View details for other cataloged assets:Dataplex Catalog Viewer(roles/dataplex.catalogViewer)
on the project where catalog entries are stored
These predefined roles contain
the permissions required to view data lineage. To see the exact permissions that are
required, expand theRequired permissionssection:
Required permissions
The following permissions are required to view data lineage:
View BigQuery table details:bigquery.tables.get- the table's storage project
View BigQuery job details:bigquery.jobs.get- the job's compute project
You can view lineage information as a graph or a list.
By default, the lineage graph displays table-level lineage. For
BigQuery and Managed Service for Apache Spark jobs, you can view column-level lineage in
both graph and list views.
The following view types are available:
Graph view: displays lineage as an interactive graph, letting you
explore relationships between data assets and columns by expanding nodes.
List view: displays lineage in a tabular format, providing simplified
and detailed representations of table-level and column-level lineage.
You can customize columns and export lineage data from this view.
The key elements in the graph are described as follows:
Nodes: represent the data entities. In the table-level view, a node
shows the table name and its columns. In the column-level view, each node
represents a specific table and its columns that have lineage.
Edges: the lines that connect nodes and represent the processes that
occur between them. Edges can feature icons or labels to provide more
information about the transformation:
Icons: In table-level view, icons appear on edges to represent
the transformation process. When you manually explore the graph,
icons on edges represent the source system of the process
(for example, BigQuery or Vertex AI).
If multiple processes are involved, a 'multiple processes' icon is
displayed. If the process source system is unknown, a gear icon is used.
When you apply filters, a gear icon is used for all processes.
Labels: In column-level view, edges are labeled to describe the
type of dependency between columns, such asExact copyorOther.
Enable data lineage
Enable data lineage to begin automatically tracking lineage
information forsupported systems.
By default, enabling the API activates lineage tracking for most supported
services. To control Managed Service for Apache Spark lineage ingestion, seeControl lineage ingestion for a service.
You must enable the Data Lineage API in both the project where you view
lineage and the projects where lineage is recorded. For more information, seeProject types.
To capture lineage information, complete the following steps:
In the Google Cloud console, on theProject selectorpage, select the project where you want to record lineage.
After you enable the Data Lineage API, the service starts automatic lineage
tracking for most supported services. You can then selectively enable or disable
lineage ingestion for specific integrations at the project, folder, or
organization level. During preview, this feature supports configuring
ingestion for Managed Service for Apache Spark, BigQuery, and Managed Service for Apache Airflow.
The configuration is hierarchical. The most specific configuration takes
precedence. For example, a project-level configuration overrides a folder-level
configuration. If no configuration is set, the service's default behavior is
used. For Managed Service for Apache Spark, BigQuery, and Managed Airflow, the default isEnabled.
Any changes to the configuration might take up to 24 hours to propagate, but
usually become effective within two hours.
For more information about controlling lineage ingestion including how the
configuration is applied hierarchically, seeControl lineage
ingestion.
Prerequisites
To control lineage ingestion, you must use the Data Lineage API.
Ensure you have a client project configured for billing and quota, as the
Data Lineage API is aclient-based API.
Enable thedatalineage.googleapis.comAPI in your client project. For
more information, seeEnable data lineage.
Set the client project. For the following examples, use theX-Goog-User-Projectheader. For more information, seeSystem parameters.
Get current configuration
To check whether lineage ingestion is enabled for a resource or to obtain
theetagvalue before you modify the configuration, retrieve the current
configuration.
//go:build examplespackagemainimport("context"configmanagement"cloud.google.com/go/datacatalog/lineage/configmanagement/apiv1"configmanagementpb"cloud.google.com/go/datacatalog/lineage/configmanagement/apiv1/configmanagementpb")funcmain(){ctx:=context.Background()// This snippet has been automatically generated and should be regarded as a code template only.// It will require modifications to work:// - It may require correct/in-range values for request initialization.// - It may require specifying regional endpoints when creating the service client as shown in:// https://pkg.go.dev/cloud.google.com/go#hdr-Client_Optionsc,err:=configmanagement.NewClient(ctx)iferr!=nil{// TODO: Handle error.}deferc.Close()req:=&configmanagementpb.GetConfigRequest{// TODO: Fill request struct fields.// See https://pkg.go.dev/cloud.google.com/go/datacatalog/lineage/configmanagement/apiv1/configmanagementpb#GetConfigRequest.}resp,err:=c.GetConfig(ctx,req)iferr!=nil{// TODO: Handle error.}// TODO: Use resp._=resp}
importcom.google.cloud.datacatalog.lineage.configmanagement.v1.Config;importcom.google.cloud.datacatalog.lineage.configmanagement.v1.ConfigManagementServiceClient;importcom.google.cloud.datacatalog.lineage.configmanagement.v1.ConfigName;importcom.google.cloud.datacatalog.lineage.configmanagement.v1.GetConfigRequest;publicclassSyncGetConfig{publicstaticvoidmain(String[]args)throwsException{syncGetConfig();}publicstaticvoidsyncGetConfig()throwsException{// This snippet has been automatically generated and should be regarded as a code template only.// It will require modifications to work:// - It may require correct/in-range values for request initialization.// - It may require specifying regional endpoints when creating the service client as shown in// https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_librarytry(ConfigManagementServiceClientconfigManagementServiceClient=ConfigManagementServiceClient.create()){GetConfigRequestrequest=GetConfigRequest.newBuilder().setName(ConfigName.ofProjectLocationName("[PROJECT]","[LOCATION]").toString()).build();Configresponse=configManagementServiceClient.getConfig(request);}}}
# This snippet has been automatically generated and should be regarded as a# code template only.# It will require modifications to work:# - It may require correct/in-range values for request initialization.# - It may require specifying regional endpoints when creating the service# client as shown in:# https://googleapis.dev/python/google-api-core/latest/client_options.htmlfromgoogle.cloudimportdatacatalog_lineage_configmanagement_v1defsample_get_config():# Create a clientclient=datacatalog_lineage_configmanagement_v1.ConfigManagementServiceClient()# Initialize request argument(s)request=datacatalog_lineage_configmanagement_v1.GetConfigRequest(name="name_value",)# Make the requestresponse=client.get_config(request=request)# Handle the responseprint(response)
gcloud
To view the current lineage configuration, use thegcloud datalineage config describecommand. You can retrieve the configuration for a project, folder, or organization.
The following example shows how to get the configuration for the current project:
gcloud datalineage config describe
For example, to get the configuration for a specific project use the--projectflag:
PROJECT_ID: The ID of the project the configuration of which you want to view.
To view the current lineage ingestion configuration of a service for a folder or organization, replace--project=PROJECT_IDwith:
--folder=FOLDER_IDif you want to view the data ingestion settings for a folder.
--organization=ORGANIZATION_IDif you want to view the data ingestion settings for an organization.
REST
To view the current lineage configuration, use theprojects.locations.config.getmethod. You can retrieve the configuration for
a project, folder, or organization.
The following example shows how to get the configuration for a project:
Before using any of the request data,
make the following replacements:
CLIENT_PROJECT_ID: The ID of your client project used for billing or quotas.
PROJECT_ID: The ID of the project whose configuration you want to view.
HTTP method and URL:
GET https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/global/config
To send your request, expand one of these options:
This means that the service uses the default lineage ingestion setting.
In this example, the lineage ingestion setting for Managed Service for Apache Spark isenabled.
If you enable lineage ingestion explicitly, you get
the following output:
To get the configuration for a folder or organization, replaceprojects/"PROJECT_IDwithfolders/FOLDER_IDororganizations/ORGANIZATION_ID.
Theetagfield in the response is a checksum generated by the server based on
the current value of the configuration. When updating a configuration using
thepatchmethod, you can include theetagvalue returned from a
recentgetrequest in the request body. If you provide theetag,
Knowledge Catalog uses it to verify that the configuration hasn't changed
since your last read request. If there's a mismatch, the update request
fails. This prevents you from unintentionally overwriting configurations made by
other users in read-modify-write scenarios. If you don't provide anetagin yourpatchrequest, Knowledge Catalog overwrites the configuration
unconditionally.
Disable lineage ingestion for a service
To manage costs, enforce data governance
policies, or exclude development projects and other workloads that don't benefit
from lineage tracking, disable lineage ingestion for a service.
To refine the lineage visualization, you can use highlighting and filtering
options inLineage explorer:
To search for specific projects, datasets, or entity names, use theFilterspanel.
After you apply filters, lineage nodes that match your filter criteria are
considered matching nodes. You can refine how matching and non-matching nodes
are displayed.
In the top right corner of the lineage graph, click theMore actionsmore_verticon located
next to theClear filtersbutton to see display options.
Select one or both of the following options:
Highlight and filter options.
You can select both options at the same time. If both options are selected,
unfiltered nodes are hidden, and matching nodes are highlighted in the
filtered graph view.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2026-06-23 UTC."],[],[]]