Lineage
Any number of factors can evolve over the course of a data pipeline's lifecycle, including the shape of processed data, the logic used to move and transform that data, and when specific data was scheduled to be processed. This is called Data Lineage.
Tabsdata's built-in data lineage automatically stores immutable versions of tables and functions as they are modified, preserving a record of how your workflows change over time. This allows users to travel back to historical versions of table data, examine the code that produced them, and see how their workflow logic has evolved.
How Lineage Is Recorded
All Tabsdata functions declare the Tables they read from and write to. This allows Tabsdata to infer dependencies and execution order, a core mechanic that enables Automatic Orchestration and Execution Plans.
Because dependencies are declared ahead of time, Tabsdata automatically links each table version to the function and function code that produced it. These versions are then grouped into an execution plan, along with the other tables and functions affected by the execution.
Table History
Each time a Function run successfully returns data, Tabsdata creates a new, immutable table version while preserving all previous versions of the table's data and schema.
Functions can also read previous Table versions. An input written as customers@HEAD^ reads the version before the latest, and customers@HEAD~2..HEAD reads a range of versions ending at the latest.
Uses the latest version of customers as input.
Schema History
Each Table version stores its own schema, so a Table's version history records changes to its schema as well as its data. Comparing the schema of one Table version with another shows which columns were added, removed, or changed type.
Function History
Functions have their own version history. Whenever a Function is updated, Tabsdata creates a new Function version, retaining a changelog of all previous versions of the function's code.
Viewing Lineage
In the Tabsdata User Interface, lineage can be viewed from Tables, Execution Plans, and Functions.
Tables
Opening a Table shows three tabs: Schema, Lineage, and Sample. The Lineage tab shows a graph of the Execution Plan that wrote the selected table version. This execution plan is unique to the specific table version, and exploring the lineage of other versions can show the evolution of a particular execution plan.
Schema
Table schema defines the structure of a table by listing its columns and their data types.
| Object | Type |
|---|---|
| order_id | i64 |
| customer_id | i64 |
| amount | f64 |
| ordered_at | datetime |