Hi @antoine_pac,
I think this is expected behaviour, and you have already identified the reason in your query. The public docs for lineage system tables explicitly say that both lineage tables represent only a subset of read/write events, and that "records are only emitted when lineage can be inferred." The broader Unity Catalog lineage documentation also says that Databricks captures column lineage “as much as possible,” and notes that there are cases where column-level lineage cannot be captured.
In your example query, it makes sense that account.entity may not appear as an upstream dependency for the target table in system.access.column_lineage, because that column is being used in the join predicate rather than flowing into a projected target column. system.access.column_lineage is most reliable for source-to-target column derivation, not necessarily for every column referenced somewhere in the query logic.
If your intention is to do the impact analysis, you can probably use system.access.table_lineage to find downstream tables that depend on the source table at all first. You can then use system.access.column_lineage for direct column-to-column mappings. You can treat join/filter/predicate-only column usage as something that may require checking the defining SQL or query history separately.
I couldn't find any references that says this is under consideration for development but if this is really important for you, you should consider reaching out to your Databricks account team to request this as a feature or product enhancement.
Hope this helps.
If this answer resolves your question, could you mark it as “Accept as Solution”? That helps other users quickly find the correct fix.
Regards,
Ashwin | Delivery Solution Architect @ Databricks
Helping you build and scale the Data Intelligence Platform.
***Opinions are my own***