column_relationship
column_relationship ¶
Column-level lineage relationships for Domo entities.
Models field-level lineage edges: how a column in one entity derives from or is influenced by a column in another entity. Follows the same directional convention as the existing Relationship and DomoLineage_Link classes:
from = downstream (consumer/dependent)
to = upstream (source/dependency)
Example
Card "Revenue" column →QUERIES→ Dataset "revenue_amount" column View "Name" column →DERIVES_FROM→ Source Dataset "Name" column
References
- OpenLineage ColumnLineageDatasetFacet (v1-2-0)
- DataHub DatasetFieldLevelUpstreamLineage
- Apache Atlas ColumnLineage (SIMPLE/EXPRESSION/SCRIPT)
- Research: datacrew/data/research/columnar-lineage-research.md
ColumnDirectness ¶
Bases: DomoEnumMixin, Enum
How directly an input column contributes to an output column.
Matches the OpenLineage DIRECT/INDIRECT distinction: - DIRECT: output column value is derived from the input column value - INDIRECT: input column influences the output but doesn't contribute to its value (e.g., used in a WHERE, JOIN, or ORDER BY)
ColumnRelationship
dataclass
¶
ColumnRelationship(
from_entity_id: str,
from_column: str,
to_entity_id: str,
to_column: str | None = None,
transformation_type: ColumnTransformationType = default,
directness: ColumnDirectness = default,
process_id: str | None = None,
expression: str | None = None,
)
Bases: DomoBase
A column-level lineage edge between two entities.
Direction convention (matches existing Relationship and DomoLineage_Link): from = downstream entity (consumer/dependent) to = upstream entity (source/dependency)
Example for a view joining two datasets
ColumnRelationship( from_entity_id="view-abc", from_column="Name", to_entity_id="dataset-123", to_column="Name", transformation_type=IDENTITY, directness=DIRECT, ) ColumnRelationship( from_entity_id="view-abc", from_column="Name", to_entity_id="dataset-456", to_column="Linked Id", transformation_type=JOIN, directness=INDIRECT, )
For ETL dataflows, process_id identifies the specific tile/action: ColumnRelationship( from_entity_id="dataflow-789", from_column="total_revenue", to_entity_id="input-dataset-123", to_column="amount", transformation_type=AGGREGATION, directness=DIRECT, process_id="action-tile-42", )
is_direct
property
¶
is_direct: bool
Whether this is a DIRECT relationship (output value derives from input).
is_identity
property
¶
is_identity: bool
Whether this is a passthrough (output = input, no transformation).
is_indirect
property
¶
is_indirect: bool
Whether this is an INDIRECT relationship (input influences but doesn't contribute to value).
ColumnTransformationType ¶
Bases: DomoEnumMixin, Enum
Nature of the transformation between input and output columns.
Direct transformations
IDENTITY: passthrough — output value = input value TRANSFORMATION: output value is a function of input value(s) AGGREGATION: output value aggregates multiple input rows
Indirect transformations
JOIN: input used in join condition GROUP_BY: output is aggregated based on input FILTER: input used as filtering condition SORT: output is sorted based on input WINDOW: output is windowed based on input CONDITIONAL: input used in IF/CASE WHEN/COALESCE