<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Data quality Lineage Root cause analysis in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/data-quality-lineage-root-cause-analysis/m-p/165595#M55452</link>
    <description>&lt;P class=""&gt;&lt;SPAN&gt;Hi everyone,&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I'm working on a client use case where they want to visualize &lt;/SPAN&gt;data quality together with data lineage&lt;STRONG&gt;.&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;My current approach is to combine:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Unity Catalog Data Lineage&lt;SPAN&gt; for upstream/downstream dependencies&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;Lakehouse Monitoring&lt;SPAN&gt; (or other data monitoring capabilities)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;DQX (Data Quality Expectations) library&lt;SPAN&gt; for table-level data quality checks&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;SPAN&gt;The idea is to display the lineage graph and, for each table in the lineage, show the corresponding data quality metrics/check results (e.g., passed/failed expectations, freshness, completeness, etc.) directly alongside the table node.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I'm wondering:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;Has anyone implemented something similar in Databricks?&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Is it possible to enrich the lineage graph with DQX or monitoring results?&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Are there recommended APIs, system tables, or best practices for achieving this?&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Or is there a better architecture or approach to solve this use case?&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;SPAN&gt;I'd appreciate any suggestions or insights from the community.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Thanks in advance!&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 13 Aug 2026 06:44:21 GMT</pubDate>
    <dc:creator>Niyojit</dc:creator>
    <dc:date>2026-08-13T06:44:21Z</dc:date>
    <item>
      <title>Data quality Lineage Root cause analysis</title>
      <link>https://community.databricks.com/t5/data-engineering/data-quality-lineage-root-cause-analysis/m-p/165595#M55452</link>
      <description>&lt;P class=""&gt;&lt;SPAN&gt;Hi everyone,&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I'm working on a client use case where they want to visualize &lt;/SPAN&gt;data quality together with data lineage&lt;STRONG&gt;.&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;My current approach is to combine:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Unity Catalog Data Lineage&lt;SPAN&gt; for upstream/downstream dependencies&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;Lakehouse Monitoring&lt;SPAN&gt; (or other data monitoring capabilities)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;DQX (Data Quality Expectations) library&lt;SPAN&gt; for table-level data quality checks&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;SPAN&gt;The idea is to display the lineage graph and, for each table in the lineage, show the corresponding data quality metrics/check results (e.g., passed/failed expectations, freshness, completeness, etc.) directly alongside the table node.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I'm wondering:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;Has anyone implemented something similar in Databricks?&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Is it possible to enrich the lineage graph with DQX or monitoring results?&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Are there recommended APIs, system tables, or best practices for achieving this?&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Or is there a better architecture or approach to solve this use case?&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;SPAN&gt;I'd appreciate any suggestions or insights from the community.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Thanks in advance!&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Aug 2026 06:44:21 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/data-quality-lineage-root-cause-analysis/m-p/165595#M55452</guid>
      <dc:creator>Niyojit</dc:creator>
      <dc:date>2026-08-13T06:44:21Z</dc:date>
    </item>
    <item>
      <title>Re: Data quality Lineage Root cause analysis</title>
      <link>https://community.databricks.com/t5/data-engineering/data-quality-lineage-root-cause-analysis/m-p/165598#M55454</link>
      <description>&lt;P&gt;&lt;FONT size="3"&gt;Hi Niyojit,&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;You can combine Unity Catalog lineage, Lakehouse Monitoring, system tables and DQX into a single unified data monitoring mart. Unity Catalog’s native lineage UI doesn't generally support custom overlay graphics directly on graph nodes. You can consolidate these tables and monitoring outputs into a dedicated metadata mart to power custom visual lineage graphs in Databricks SQL, Streamlit or AI BI.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;H3&gt;&lt;FONT size="3"&gt;Data Tables&lt;/FONT&gt;&lt;/H3&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;You can use several key system tables and other tables to create a metadata mart&lt;/FONT&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Lineage Dependencies -&lt;/STRONG&gt;&amp;nbsp;Query system.access.table_lineage to map table-to-table dependencies alongside execution context (source_type such as JOB, PIPELINE, NOTEBOOK, or QUERY, entity IDs, and event timestamps), and system.access.column_lineage for column-level transformations.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Data Quality Monitoring -&lt;/STRONG&gt;&amp;nbsp;Leverage system.data_quality_monitoring.table_results for automated freshness and completeness metrics, health statuses (HEALTHY, UNHEALTHY, TRAINING, ERROR), and root-cause metadata including upstream job IDs. Because this table stores time-series data, you will need to window over snapshot timestamps to isolate the current state.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;DQX Expectations -&lt;/STRONG&gt;&amp;nbsp;Pull the custom DQX storage destination (Delta tables or monitoring outputs) to gather expectation names, pass/fail states, actual versus expected values, and execution timestamps.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;System Tables -&lt;/STRONG&gt;&amp;nbsp;Use system.information_schema.tables as your base inventory (row count, size in bytes, owner, creation/modification dates), system.access.table_usage to quantify query frequency and top user patterns, and system.access.audit to track schema evolution and operational permission changes if feasible.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Job &amp;amp; Pipeline Metadata -&lt;/STRONG&gt;&amp;nbsp;For lineage events originating from jobs or pipelines, pull execution history, run status, and failure patterns using the Databricks CLI or SDK, then materialize this metadata alongside your lineage tables.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;H3&gt;&lt;FONT size="3"&gt;Strategy&lt;/FONT&gt;&lt;/H3&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;The metadata mart tables should represent a Current State Table Profile containing core identity attributes, aggregated lineage metrics (upstream/downstream table counts, target array lists, associated job/pipeline/notebook IDs, lineage depth), current quality health status, DQX pass rates and failed expectation lists, standard operational metadata (size, owner, 30-day query volume), and enriched metrics such as dynamic criticality scores, incident frequency and business domain tags.&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;You can maintain supplementary datasets as below if feasible&lt;/FONT&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Lineage Edges -&lt;/STRONG&gt;&amp;nbsp;Maps explicit source-to-target table pairs, relationship types, associated job or notebook IDs, and last observed timestamps to enable multi-hop path tracing.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Quality Check History -&lt;/STRONG&gt;&amp;nbsp;Preserves time-series logs of DQX runs, freshness checks, and completeness outputs to report on quality trends over time.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Incident Timeline -&lt;/STRONG&gt;&amp;nbsp;Tracks incident start and resolution times, root cause job IDs, and downstream impact scope to analyze chronic stability patterns.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Job-to-Table Mapping -&lt;/STRONG&gt;&amp;nbsp;Maps job IDs directly to read/write table arrays, enriched with job run history, owners, and runbook links.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;DIV&gt;&lt;FONT size="3"&gt;Maintain a Current State Table updated frequently via dynamic overwrites or merges to show immediate failures.&amp;nbsp;&lt;/FONT&gt;&lt;SPAN&gt;Maintain a Historical Snapshots Table appended on a scheduled basis (daily) to track metrics drift, SLA compliance, and long-term quality trends.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 13 Aug 2026 07:58:59 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/data-quality-lineage-root-cause-analysis/m-p/165598#M55454</guid>
      <dc:creator>balajij8</dc:creator>
      <dc:date>2026-08-13T07:58:59Z</dc:date>
    </item>
    <item>
      <title>Re: Data quality Lineage Root cause analysis</title>
      <link>https://community.databricks.com/t5/data-engineering/data-quality-lineage-root-cause-analysis/m-p/165603#M55457</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/244855"&gt;@Niyojit&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I think your proposed architecture is broadly the right direction, but I would separate &lt;/SPAN&gt;lineage collection from lineage visualization.&lt;/P&gt;&lt;P&gt;Unity Catalog already exposes table-to-table relationships programmatically through system.access.table_lineage. It contains source_table_full_name and target_table_full_name, so it can effectively become the edge list for a custom lineage graph.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;For data quality, there are now several useful sources that can be joined to those lineage nodes:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;Data Quality Monitoring / anomaly detection&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; writes table-level results to system.data_quality_monitoring.table_results.&lt;/SPAN&gt;&lt;SPAN&gt;This is especially useful because it already contains a consolidated health status plus freshness and completeness results. Interestingly, it also has a downstream_impact&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;structure with the number of downstream tables and an impact/severity level, so Databricks itself is starting to connect DQ issues with dependency information.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;Data profiling&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; - the capability formerly called Lakehouse Monitoring - creates table_profile_metrics&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;and&amp;nbsp;&amp;nbsp;table_drift_metrics&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Delta tables. Those can provide things such as null counts, distributions, drift and custom metrics.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;DQX&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; can persist centralized summary metrics to a Delta table. It captures input/error/warning/valid row counts and also exposes per-check results through&amp;nbsp;check_metrics,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;so you can derive things such as "8/10 checks passed" or identify the specific failed checks.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;So, in short -&amp;nbsp;&lt;/SPAN&gt;this is achievable&lt;STRONG&gt;.&amp;nbsp;&lt;/STRONG&gt;Build graph edges from system.access.table_lineage, then extract information from&amp;nbsp;DQ Monitoring + profiling + DQX into a dedicated table that you can later join to graph edges.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Aug 2026 09:27:23 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/data-quality-lineage-root-cause-analysis/m-p/165603#M55457</guid>
      <dc:creator>szymon_dybczak</dc:creator>
      <dc:date>2026-08-13T09:27:23Z</dc:date>
    </item>
  </channel>
</rss>

