Skip to content

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