File Based Lineage
Overview
File Based Lineage is a storage and lakehouse platform. Learn more in the official File Based Lineage documentation.
The DataHub integration for File Based Lineage covers file/lakehouse metadata entities such as datasets, paths, and containers. Depending on module capabilities, it can also capture features such as lineage, usage, profiling, ownership, tags, and stateful deletion detection.
Concept Mapping
While the specific concept mapping is still pending, this shows the generic concept mapping in DataHub.
| Source Concept | DataHub Concept | Notes |
|---|---|---|
| Platform/account/project scope | Platform Instance, Container | Organizes assets within the platform context. |
| Core technical asset (for example table/view/topic/file) | Dataset | Primary ingested technical asset. |
| Schema fields / columns | SchemaField | Included when schema extraction is supported. |
| Ownership and collaboration principals | CorpUser, CorpGroup | Emitted by modules that support ownership and identity metadata. |
| Dependencies and processing relationships | Lineage edges | Available when lineage extraction is supported and enabled. |
Module datahub-lineage-file
Important Capabilities
| Capability | Status | Notes |
|---|---|---|
| Column-level Lineage | ✅ | Specified in the lineage file. |
| Table-Level Lineage | ✅ | Specified in the lineage file. |
Overview
The datahub-lineage-file module ingests metadata from File Based Lineage into DataHub. It is intended for production ingestion workflows and module-specific capabilities are documented below.
This plugin pulls lineage metadata from a yaml-formatted file. An example of one such file is located in the examples directory here.
Prerequisites
Before running ingestion, ensure network connectivity to the source, valid authentication credentials, and read permissions for metadata APIs required by this module.
Install the Plugin
pip install 'acryl-datahub[datahub-lineage-file]'
Starter Recipe
Check out the following recipe to get started with ingestion! See below for full configuration options.
For general pointers on writing and running a recipe, see our main recipe guide.
source:
type: datahub-lineage-file
config:
# Coordinates
file: /path/to/file_lineage.yml
# Whether we want to query datahub-gms for upstream data
preserve_upstream: False
sink:
# sink configs
Config Details
- Options
- Schema
Note that a . is used to denote nested fields in the YAML recipe.
| Field | Description |
|---|---|
file ✅ string | File path or URL to lineage file to ingest. |
preserve_upstream boolean | Whether we want to query datahub-gms for upstream data. False means it will hard replace upstream data for a given entity. True means it will query the backend for existing upstreams and include it in the ingestion run Default: True |
The JSONSchema for this configuration is inlined below.
{
"additionalProperties": false,
"properties": {
"file": {
"description": "File path or URL to lineage file to ingest.",
"title": "File",
"type": "string"
},
"preserve_upstream": {
"default": true,
"description": "Whether we want to query datahub-gms for upstream data. False means it will hard replace upstream data for a given entity. True means it will query the backend for existing upstreams and include it in the ingestion run",
"title": "Preserve Upstream",
"type": "boolean"
}
},
"required": [
"file"
],
"title": "LineageFileSourceConfig",
"type": "object"
}
Capabilities
Use the Important Capabilities table above as the source of truth for supported features and whether additional configuration is required.
Lineage File Format
The lineage source file should be a .yml file with the following top-level keys:
version: the version of lineage file config the config conforms to. Currently, the only version released
is 1.
lineage: the top level key of the lineage file containing a list of EntityNodeConfig objects
EntityNodeConfig:
- entity: EntityConfig object
- upstream: (optional) list of child EntityNodeConfig objects
- fineGrainedLineages: (optional) list of FineGrainedLineageConfig objects
EntityConfig:
- name: identifier of the entity. Typically name or guid, as used in constructing entity urn.
- type: type of the entity (only
datasetis supported as of now) - env: the environment of this entity. Should match the values in the table here
- platform: a valid platform like kafka, snowflake, etc..
- platform_instance: optional string specifying the platform instance of this entity
For example if dataset URN is urn:li:dataset:(urn:li:dataPlatform:redshift,userdb.public.customer_table,DEV) then EntityConfig will look like:
name: userdb.public.customer_table
type: dataset
env: DEV
platform: redshift
FineGrainedLineageConfig:
- upstreamType: type of upstream entity in a fine-grained lineage; default = "FIELD_SET"
- upstreams: (optional) list of upstream schema field urns
- downstreamType: type of downstream entity in a fine-grained lineage; default = "FIELD_SET"
- downstreams: (optional) list of downstream schema field urns
- transformOperation: (optional) transform operation applied to the upstream entities to produce the downstream field(s)
- confidenceScore: (optional) the confidence in this lineage between 0 (low confidence) and 1 (high confidence); default = 1.0
FineGrainedLineageConfig can be used to display fine grained lineage, also referred to as column-level lineage, for custom sources.
You can also view an example lineage file checked in here
Limitations
Module behavior is constrained by source APIs, permissions, and metadata exposed by the platform. Refer to capability notes for unsupported or conditional features.
Troubleshooting
If ingestion fails, validate credentials, permissions, connectivity, and scope filters first. Then review ingestion logs for source-specific errors and adjust configuration accordingly.
Code Coordinates
- Class Name:
datahub.ingestion.source.metadata.lineage.LineageFileSource - Browse on GitHub
If you've got any questions on configuring ingestion for File Based Lineage, feel free to ping us on our Slack.
This page is auto-generated from the underlying source code. To make changes, please edit the relevant source files in the metadata-ingestion directory.
Tip: For quick typo fixes or documentation updates, you can click the ✏️ Edit icon directly in the GitHub UI to open a Pull Request. For larger changes and PR naming conventions, please refer to our Contributing Guide.