If your organization is data-driven, it is important to understand your data’s origin, movement, and transformation. This imparts transparency within your organization, ensures data integrity, and enables informed decision-making. You can use data lineage for this.
If you use traditional methods of tracking data lineage, you will be required to create manual documentation, which is a complex process. The Snowflake Data Cloud offers a streamlined solution for this. With its built-in data lineage features, Snowflake allows you to directly capture, visualize, and analyze data lineage within its cloud-native environment.
This article will provide information on Snowflake data lineage, the steps for setting it up, and the best tools for data lineage.
What is Data Lineage?
Data lineage is the process that helps you understand, record, and visualize data when it flows from sources to various destinations. The process also includes all the transformations the data has gone through along the way. It ensures that your data is coming from a reliable source, has been transformed correctly, and is loaded to the specified location.
Data lineage simplifies tracing errors back to their root cause in data analytics. It also enables transparency, accountability, and trust in data assets. This is essential for data governance, compliance, impact analysis, troubleshooting, and ensuring data quality and integrity.
Data Lineage in Snowflake
Snowflake is a cloud-based data warehousing platform that offers SaaS solutions. It provides features like data sharing, Snowpipe, streams, time travel, and native data lineage capabilities, which enable you to understand what is happening in your virtual warehouses.
Snowflake consists of a special view called ACCESS_HISTORY, which holds the history of tables, views, and columns for up to one year. It allows you to create a query on any object, even for a column, and view the history instead of tracing it manually. You can access the lineage of data through Snowflake views like INFORMATION_SCHEMA.TABLES and ACCOUNT_USAGE. These views provide details about data origin, transformations, and dependent objects.
Why Snowflake is Ideal for Data Lineage?
Snowflake helps you understand who accessed your data, when it was accessed, and what transformations were performed on it. Along with the Access History view, it provides built-in metadata management that helps in automated lineage tracking. Snowflake also enables you to trace data at a granular level, which helps identify the exact source of data quality issues.
Snowflake does not offer a built-in lineage visualization tool. However, you can use the data retrieved from lineage views with third-party data lineage tools for visual representations of your data flow. Also, Snowflake is working to improve its data lineage capabilities through the upcoming Snowflake data lineage UI, which is in the private preview stage. It will give you a comprehensive view of the upstream and downstream lineage of objects. This will make it easy for you to see how downstream objects may be affected by changes that happen upstream.
Steps to Set up Data Lineage for Snowflake
Before establishing a data lineage Snowflake setup, you should ensure your data lineage tool can connect to Snowflake. You should also ensure that the data encryption and computing power of the data catalog are sufficient to address data crawling, previewing, and querying operations. Once this is done, you can follow the steps below for Snowflake data lineage setup:
- Creating Database Role for Data Lineage: Snowflake consists of an access control layer that depends on users and roles. The roles are granted permission and are assigned to a user. You can assign more than one role to users, creating role hierarchies. You can use the below command to create a new role called data_lineage_role:
CREATE OR REPLACE ROLE data_lineage_role;
In the next step, you can create a database user and assign this newly created role to it.
- Creating Database User: If you already have a data_catalog_user, use the same or create a new user. In addition to the data_catalog_role, you can also assign the data_lineage_role to the same user. These are the commands you can use to create a database user in Snowflake:
# Method 1: With password
CREATE USER data_lineage_user PASSWORD='<password>' DEFAULT_ROLE=data_lineage_role DEFAULT_WAREHOUSE='<warehouse_name>' DISPLAY_NAME='<display_name>';
# Method 2: Using public key
CREATE USER data_lineage_user RSA_PUBLIC_KEY='<rsa_public_key>' DEFAULT_ROLE=data_lineage DEFAULT_WAREHOUSE='<warehouse_name>' DISPLAY_NAME='<display_name>';
In addition to these two methods, you can also use Single Sign-on (SSO) for user authentication. SSO is an identification method that allows you to log in to multiple websites with a single set of credentials. Two types of SSO can authenticate Snowflake: browser-based SSO and your identity provider’s native SSO, which is only available for Okta.
- Identifying Tables and Views: To know what permissions to grant to the data_lineage_role, you should understand the various methods of fetching lineage metadata from Snowflake. You should also keep in mind the level of support your data catalog or lineage tool provides for these methods. This is because some operations in fetching metadata involve advanced SQL parsing, querying, and data flattening to obtain table-level and column-level lineage.
The function and level of detail of three different data sources for Snowflake’s lineage metadata can be compared as follows:
Schema Object | Function | Level of Detail |
INFORMATION_SCHEMA.OBJECT_DEPENDENCIES | Captures how different Snowflake objects depend on each other. | Low |
ACCOUNT_USAGE.ACCESS_HISTORY | Contains queries for DML operations and helps with column-level lineage. | High |
ACCOUNT_USAGE.QUERY_HISTORY | Logs every query that you ran in the last 365 days. | High |
- Assigning Read Permissions to the Database Role: To grant access to all three objects given above, you will have to use the following
GRANT
statements:
# To access dependencies between Snowflake objects
GRANT USAGE ON WAREHOUSE <warehouse_name> TO ROLE data_lineage_role;
# To access logs for DML operations and changes in columns due to the operations AND
# To get access to every query run in the past 365 days
GRANT USAGE, MONITOR ON WAREHOUSE <warehouse_name> TO ROLE data_lineage_role;
This shows how permissions are granted at the WAREHOUSE level. You should separately provide the USAGE or MONITOR privilege to all virtual warehouses in your Snowflake account.
Alternatively, you can grant the permissions from the ACCOUNTADMIN role to the data_lineage_role. It is not a recommended method, but you can perform it using:
USE ROLE ACCOUNTADMIN;
GRANT IMPORTED PRIVILEGES ON DATABASE snowflake TO ROLE data_lineage_role;
If there are cloned accounts in Snowflake, you will have to grant permission for their access.
- Assigning the Database Role to the Database User: After assigning all the relevant permissions to the role, you should assign the role to the data_lineage_user by using the
GRANT
statement given below:
GRANT ROLE data_lineage_role TO USER data_lineage_user;
You can now connect to your Snowflake account using your data catalog or lineage tool.
- Configuring the Snowflake Connector and Starting Crawling Lineage Metadata: To configure the Snowflake connector, you can either log into your data catalog or lineage tool and search for it. You will have to enter the database user credentials into that connector. If there is an error, you must check if you skipped any networking or security steps. You can also use the SnowCD tool (Snowflake Connectivity Diagnostic) to check network connectivity.
After resolving all the connectivity issues, you can start crawling lineage metadata. You can now identify and connect other data sources to your catalog. It gives a complete picture of the data flow and its lineage on your data platform.
Best Data Lineage Tools
Some Snowflake data lineage tools are as follows:
1. Dataedo
Dataedo extracts lineage automatically, or designs flow manually and visualize data movement within the system. While using Dataedo, you can share interactive diagrams with your team to trace data flows from source to destination.
2. Manta
MANTA is a data lineage tool that provides end-to-end lineage tracking, impact analysis, and other features to help with data governance and management. It also enables integration with various data platforms and tools, making your data assets manageable.
3. Collibra Data Lineage
Collibra is a data governance platform that includes data lineage tracking and cataloging. It helps you manage and use your data assets more effectively, and its user-friendly interface enables you to integrate easily with other data tools and platforms.
4. Tokern
Tokern is used for cloud data warehouses and data lakes. It provides you with column-level data lineage from your databases and warehouses hosted on Google BigQuery, AWS Redshift, and Snowflake. Tokern also helps you build data lineage from your query history or ETL scripts, making it ideal for BI and ETL tool integration.
5. SQLFlow
SQLFlow is an online SQL data lineage tool that visualizes the overall data flow. It facilitates automated SQL data lineage analysis across Databases, ETL, Business Intelligence, and the Cloud by parsing SQL Scripts. It provides granular impact analysis by drilling down into table, column, and query-level lineage.
Benefits of Data Lineage
Data lineage has several benefits, such as:
- Better Data Quality: Data lineage helps you identify the origin of errors or inconsistencies in your data. By understanding where an issue arose, you can fix it at the source and prevent it from propagating throughout your system. This leads to cleaner, more reliable data for better decision-making.
- Improved Data Governance: By tracing data back to its source, the data governance framework can help you identify potential inconsistencies, errors, or unauthorized data modifications, ensuring data integrity and adherence to established data quality standards.
- Impact Analysis and Change Management: Whenever you make changes within a data source, they can have downstream effects that are not immediately visible. Impact analysis using data lineage informs you about which downstream objects will be affected if you make changes to data structures or processes. This helps you anticipate and manage the ripple effects of changes, resulting in minimum disruptions.It anticipates and manages the ripple effects of changes, which helps minimize disruptions and maintain data integrity.
- Streamlines Data Migration: Data lineage offers a detailed view of data movement and dependencies, which assists data migration. It helps you understand the location and lifecycle of data sources, reduces the chance of mistakes during the migration, and ensures the data is ready for use in its new environment. This minimizes disruptions in data migration and ensures data integrity.
- Root Cause Analysis: Anomalies can occur at any point in your data pipeline, and data lineage can help you do root cause analysis of such anomalies. Using data lineage, you can trace the point of error to its origin. It enables you to identify and address an error’s root cause quickly.
Use of Hevo for Snowflake Data Lineage
Data integration tools consolidate your varied data sources into a centralized system. This allows data lineage solutions to track data flow from origin to final use. Hevo offers Snowflake as a connector for data integration. You can integrate your data using Hevo for a seamless Snowflake data lineage setup.
Hevo Data is a no-code ELT platform that provides real-time data integration and a cost-effective way to automate your data pipeline workflow. With over 150 source connectors, you can integrate your data from multiple platforms, conduct advanced analysis on your data, and produce useful insights.
Here are some of the most important features of Hevo Data:
- Data Transformation: Hevo Data allows you to transform your data for analysis with a simple Python-based drag-and-drop data transformation technique.
- Automated Schema Mapping: Hevo Data automatically arranges the destination schema to match the incoming data. It also lets you choose between Full and Incremental Mapping.
- Incremental Data Load: It ensures proper bandwidth utilization at both the source and the destination by allowing real-time data transfer of the modified data.
Get Started with Hevo for Free
In addition to consolidation, documenting the data transformations during integration helps you trace how the data has been modified along its journey. Further, data integration platforms maintain metadata that stores information about how data moves from source to destination within the pipeline. All these help you track your data lineage.
Conclusion
This blog provides a comprehensive overview of Snowflake data lineage tracking and a detailed description of the steps and tools for data lineage in Snowflake. Data integration plays a critical role in establishing and maintaining effective data lineage. You can use Hevo Data features, such as fully managed data pipelines, a user-friendly interface, a wide range of connectors, and cost-effectiveness for data integration.
Want to take Hevo for a spin? Sign Up for a 14-day free trial and experience the feature-rich Hevo suite firsthand. Also checkout our unbeatable pricing to choose the best plan for your organization.
Share your experience with Snowflake Data Lineage in the comments section below!
FAQs
- What is the difference between Data Lineage and Data Provenance?
Data lineage explains where data has come from and how it has changed through its lifecycle. On the other hand, data provenance informs you about the historical record of the data, including the history of a data product, starting from its original sources.
- Is data lineage part of data quality?
Data lineage is not directly part of data quality but plays a critical role in enabling and maintaining data quality. It maps the data flow and enables the application of the appropriate data quality rules, checks, and corrections. Data lineage also helps enhance data trust and transparency by documenting the data sources, transformations, and usage.
Shuchi has a strong background in physics and journalism with a keen interest in data science. She has written insightful articles on data engineering and analytics. Proficient in Power BI, Python (NumPy, Pandas), SQL, and Excel, Shuchi is dedicated to continuous learning, staying updated with the latest trends in data science and AI. Her versatile skill set makes her a valuable contributor to the technological world.