diff --git a/docs/assets/images/features/cll-1.png b/docs/assets/images/features/cll-1.png index 4c29260..7b2588e 100644 Binary files a/docs/assets/images/features/cll-1.png and b/docs/assets/images/features/cll-1.png differ diff --git a/docs/assets/images/features/cll-2.png b/docs/assets/images/features/cll-2.png index 3313210..11e67b3 100644 Binary files a/docs/assets/images/features/cll-2.png and b/docs/assets/images/features/cll-2.png differ diff --git a/docs/assets/images/features/cll-3.png b/docs/assets/images/features/cll-3.png new file mode 100644 index 0000000..e89bdfe Binary files /dev/null and b/docs/assets/images/features/cll-3.png differ diff --git a/docs/assets/images/features/cll-example.png b/docs/assets/images/features/cll-example.png new file mode 100644 index 0000000..b575789 Binary files /dev/null and b/docs/assets/images/features/cll-example.png differ diff --git a/docs/features/column-level-lineage.md b/docs/features/column-level-lineage.md index 710d1ba..664a187 100644 --- a/docs/features/column-level-lineage.md +++ b/docs/features/column-level-lineage.md @@ -13,7 +13,7 @@ Common use-cases for column-level lineage are ## Usage -1. Select a node in the lineage DAG, then click the **eye** icon next to the column you want to view. +1. Select a node in the lineage DAG, then click the the column you want to view. ![alt text](../assets/images/features/cll-1.png){: .shadow} @@ -21,6 +21,10 @@ Common use-cases for column-level lineage are ![alt text](../assets/images/features/cll-2.png){: .shadow} +1. To exit column-level lineage view, click the close button in the upper-left corner. + + ![alt text](../assets/images/features/cll-3.png){: .shadow} + ## Transformation Types The transformation type is also displayed for each column, which will help you understand how the column was generated or modified. @@ -34,6 +38,69 @@ The transformation type is also displayed for each column, which will help you u | Unknown | We have no information about the transformation type. This could be due to a parse error, or other unknown reason. | -## Limitation +## Impact Radius of a Column + +The **right side of the Column-Level Lineage (CLL)** graph represents the **impact radius** of a selected column. +This view helps you quickly understand what will be affected if that column changes. + +### What does the impact radius include? + +- **Downstream columns** that directly reference the selected column +- **Downstream models** that directly depend on the selected column +- **All indirect downstream columns and models** that transitively depend on it + +This helps you evaluate both the direct and downstream effects of a column change, making it easier to understand its overall impact. + + +### Example: Simplified Model Chain + +Given the following models, here's how changes to `stg_orders.status` would impact downstream models: + +```sql +-- stg_orders.sql +select + order_id, + customer_id, + status, + ... +from {{ ref("raw_orders") }} + + +-- orders.sql +select + order_id, + customer_id, + status, + ... +from {{ ref("stg_orders") }} + + +-- customers.sql +select + c.customer_id, + ... +from {{ ref("stg_customers") }} as c +join {{ ref("stg_orders") }} as o + on c.customer_id = o.customer_id +where o.status = 'completed' +group by c.customer_id + + +-- customer_segments.sql +select + customer_id, + ... +from {{ ref("customers") }} +``` + +![alt text](../assets/images/features/cll-example.png){: .shadow} + +The following impact is detected: + +- **orders**: This model is partially impacted, as it selects the `status` column directly from `stg_orders` but does not apply any transformation or filtering logic. The change is limited to the `status` column only. + +- **customers**: This model is fully impacted, because it uses `status` in a WHERE clause (`where o.status = 'completed'`). Any change to the logic in `stg_orders.status` can affect the entire output of the model. + +- **customer_segments**: This model is indirectly impacted, as it depends on the `customers` model, which itself is fully impacted. Even though `customer_segments` does not directly reference `status`, changes can still propagate downstream via its upstream dependency. + -Column-level lineage only displays column selection operations. It does not indicate if a column has been used in filters (WHERE clauses), with grouping (GROUP BY), joins, or other transformations. \ No newline at end of file