<?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>article Monitoring DLT Pipeline Performance and Best Practices in Technical Blog</title>
    <link>https://community.databricks.com/t5/technical-blog/monitoring-dlt-pipeline-performance-and-best-practices/ba-p/118220</link>
    <description>&lt;H1&gt;&lt;FONT size="6"&gt;&lt;STRONG&gt;Introduction - From Reactive Firefighting to Proactive Monitoring&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class="lia-align-justify"&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;In many industries, data pipelines power critical decisions from fraud detection to inventory management. When these pipelines fail silently or degrade gradually, this could cause downstream problems such as misplaced customer trust, compliance violations, and operational bottlenecks.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;Monitoring data workloads can be challenging if not done right, especially when issues are difficult to detect and resolve. Without adequate monitoring, teams may face unexpected downtime and spend significant time troubleshooting problems. DLT provides built-in monitoring features and integrates with Databricks’ native tools, making it easier to track pipeline health, identify bottlenecks, and respond quickly to errors. This approach helps ensure that data remains reliable and that pipelines run smoothly with minimal manual intervention.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;Unlike fragmented approaches that force teams to cobble together logs, DLT bakes monitoring into the following layers:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P class="lia-align-justify"&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Centralized data quality rules&lt;/STRONG&gt;&lt;SPAN&gt;: This lets the team embed checks like “&lt;EM&gt;transaction amounts must be positive&lt;/EM&gt;” directly into pipeline code, ensuring validation happens at the source.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P class="lia-align-justify"&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Streaming metrics&lt;/STRONG&gt;&lt;SPAN&gt;: DLT pipelines can now monitor streaming sources such as Apache Kafka and Auto Loader. Streaming metrics include backlog bytes, records, seconds, and files, which are displayed in real-time within the DLT UI.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P class="lia-align-justify"&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Automatic Lineage mapping&lt;/STRONG&gt;&lt;SPAN&gt;: This visually traces errors back to their origin.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P class="lia-align-justify"&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Custom Monitoring&lt;/STRONG&gt;&lt;SPAN&gt;: New capabilities allow for defining custom actions based on specific pipeline events. This is particularly useful for alerts on operational thresholds and other monitoring flexibilities. In addition to these native capabilities, teams can still leverage traditional Spark mechanisms such as &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;StreamingQueryListener&lt;/FONT&gt;&lt;SPAN&gt;, cluster logs, and driver/executor logs for deeper insights, troubleshooting, and historical auditing.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P class="lia-align-justify"&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Self-correcting workflows&lt;/STRONG&gt;&lt;SPAN&gt;: DLT can automatically retry failed tasks or trigger alerts for unresolved issues, minimizing manual firefighting. If problems arise, DLT automatically maps errors back to their origin-for example, tracing a sudden spike in invalid customer IDs to a specific transformation step. For common hiccups like brief network outages, the system quietly retries tasks up to five times, alerting engineers only if problems persist.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-align-justify"&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;In this article, we explore performance-focused monitoring best practices, highlighted through a real-life deployment example.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;&lt;FONT size="6"&gt;1.&amp;nbsp;Monitoring Techniques with DLT Pipelines&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;As mentioned above, DLT has built-in monitoring, which includes DLT UI quality metrics, structured event logs, and system-level metadata tables. This allows data engineers to track pipeline health in a scalable way.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;1.1 DLT Monitoring Features&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class="lia-align-justify"&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;Consider the following DLT Python logic that moves sample quote data from Bronze to Gold. We will use this example to guide our discussion and explore how the DLT UI and DLT expectations can help monitor the quality of the data being processed.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Quotes Processing Medallion Architecture" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16651iCC060A12EBF3AE74/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Quotes Processing Medallion Architecture" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Quotes Processing Medallion Architecture&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Below is the code block to read the data from the source table, &lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;main.pricing_data.quotes&lt;/FONT&gt;:&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;import dlt
from pyspark.sql.functions import *


@dlt.table(
 comment="Raw quotes data",
 table_properties={"quality": "bronze"})
def bronze_quotes():
   return spark.sql("select * from main.pricing_data.quotes")
&lt;/LI-CODE&gt;
&lt;P&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;The next block of code is used to transform the bronze data into silver and gold layers:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI class="lia-align-justify" style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;The silver hop is to add expectations on the bronze data, which tells DLT to expect a certain quality of data to pass through downstream. If there is any violation, we can control what happens to the insufficient data.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="lia-align-justify" style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;Finally, in the gold layer, we perform aggregations and make the data publish-ready.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI-CODE lang="python"&gt;# Silver Layer Table
@dlt.table(table_properties={"quality": "silver"})
@dlt.expect_or_drop("valid_pricing", "Quote_Price &amp;lt; 3900")
@dlt.expect_or_drop("valid_driver_age", "Driver_Age BETWEEN 17 AND 90")
def silver_quotes():
   return (
       dlt.read("bronze_quotes")
       .dropDuplicates(["ID"])
       .filter(
           (col("Annual_Mileage") &amp;gt; 0) &amp;amp;
           (col("Credit_Score").between(300, 850)) &amp;amp;
           (col("Vehicle_Type").isin(["Car", "Truck", "Motorbike"])))
       .withColumn("Quote_Price", col("Quote_Price").cast("integer"))
       .withColumn("Driver_Age", col("Driver_Age").cast("integer"))
       .withColumn("Date", col("Date").cast("date")))

# Gold Layer Table
@dlt.table(table_properties={"quality": "gold"})
def gold_vehicle_quotes():
   return (
       dlt.read("silver_quotes")
       .groupBy("Vehicle_Type")
       .agg(
           avg("Quote_Price").alias("Average_Premium"),
           count("ID").alias("Total_Policies")))
&lt;/LI-CODE&gt;
&lt;H3&gt;1.1.1 UI Quality Metrics&lt;/H3&gt;
&lt;P class="lia-align-justify"&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;The default feature of observability in the DLT pipeline is achieved using a high-quality lineage diagram that provides visibility into how data flows for impact analysis.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;When the pipeline is executed, the DLT UI displays the corresponding DAG, which serves as the first level of monitoring. This view provides an overview of the data volume being processed, particularly in the Silver layer. In this example, approximately 42k records were processed successfully, while around 8.3k records failed the quality checks.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DLT Pipeline DAG - Quotes Processing" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16650iD66453391B508F97/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="DLT Pipeline DAG - Quotes Processing" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;DLT Pipeline DAG - Quotes Processing&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;If we click the &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;silver_quotes&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; materialized view, we can check out the “&lt;/SPAN&gt;&lt;STRONG&gt;Data Quality&lt;/STRONG&gt;&lt;SPAN&gt;” tab, which shows more granular information. It shows the user the number of records written into the target and those dropped. Additionally, it also indicates the expectations, namely &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;valid_driver_age&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;valid_pricing&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; which drove these metrics.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Data Quality Statistics on silver_quotes table" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16649iC4121839F1A4D455/image-size/medium?v=v2&amp;amp;px=400" role="button" title="image.png" alt="Data Quality Statistics on silver_quotes table" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Data Quality Statistics on silver_quotes table&lt;/span&gt;&lt;/span&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;1.1.2 DLT Expectations&lt;/H3&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;DLT enforces data quality through declarative expectations that validate records during pipeline execution. The DLT UI's &lt;/SPAN&gt;&lt;STRONG&gt;Data Quality&lt;/STRONG&gt;&lt;SPAN&gt; tab displays real-time metrics for constraints defined via &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;expect&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; (retain), &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;expect_or_drop&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;, and &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;expect_or_fail&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; operators. For example, we have used the following operators to drop records that do not meet the valid cut-off age for people obtaining a driver’s quotation and to filter out high quote price values using the &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;@expect_or_drop&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; decorator on the Silver materialized view, &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;silver_quotes&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;# valid pricing expectation checks for the value of quote price
@dlt.expect_or_drop("valid_pricing", "Quote_Price &amp;lt; 3900")

# valid driver age expectation checks for the age of the driver
@dlt.expect_or_drop("valid_driver_age", "Driver_Age BETWEEN 17 AND 90")&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;More information and sample DLT exceptions can be found in this Databricks official documentation: &lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/dlt/expectations" target="_blank" rel="noopener"&gt;Manage data quality with pipeline expectations&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;1.2 Event Log&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Each DLT pipeline automatically creates an event log related to a pipeline, including audit logs, data quality checks, pipeline progress, and data lineage.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;There are two ways to access this DLT &lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/dlt/observability#what-is-the-dlt-event-log" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;event log&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;: through the &lt;STRONG&gt;default publishing mode&lt;/STRONG&gt; or the &lt;STRONG&gt;legacy publishing mode&lt;/STRONG&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify" data-unlink="true"&gt;&lt;SPAN&gt;With default publishing mode, each DLT pipeline automatically creates a log capturing lifecycle events, expectation outcomes, errors, and operational metadata. If you’re building your pipeline via the Databricks UI, you can set this under “&lt;STRONG&gt;Advanced settings” &lt;/STRONG&gt;in the pipeline configuration.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ETL Pipeline Create Configuration" style="width: 781px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16643i9EB6B929C8A9B8C9/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="ETL Pipeline Create Configuration" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;ETL Pipeline Create Configuration&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;If using JSON or API-based configuration, you can add the following code within your pipeline JSON script using:&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;"event_log": {
    "catalog": "main",
    "schema": "monitoring",
    "name": "event_log_quotes_pipeline"
}&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;This configuration will publish structured pipeline events into the specified Unity Catalog location under the catalog and schema specified, making them queryable like any other Delta table.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;The example below filters for error-level events from the past 24 hours, helping you quickly identify recent pipeline failures, expectation violations, or operational issues.&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;SELECT timestamp, event_type, message
FROM main.monitoring.event_log_quotes_pipeline
WHERE level = 'ERROR'
  AND timestamp &amp;gt; current_timestamp() - INTERVAL 24 HOURS
ORDER BY timestamp DESC;&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;With legacy publishing mode, you can utilize the &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;event_log&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; Table-Valued function (TVF) to fetch the event log for the pipeline. You retrieve the event log for a pipeline by passing the pipeline ID or a table name to the TVF. For example, to recover the event log records for the pipeline with ID "&lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;19c78331-2ea5-1973-a1b2-4dbef8b2198c&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;", you can run the following:&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;SELECT * FROM event_log("event_log_19c78331_2ea5_1973_a1b2_4dbef8b2198c")&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;You can see if your pipeline is in legacy publishing mode if you see the following in your pipeline UI settings:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LingeshK_1-1746630980490.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16629i4F94AE86FD2202CB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LingeshK_1-1746630980490.png" alt="LingeshK_1-1746630980490.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Additionally, for legacy publishing mode, remember the following pre-requisites:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI class="lia-align-justify" style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;The &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;event_log&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; TVF can be called only by the pipeline owner.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class="lia-align-justify" style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;You cannot use the &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;event_log&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; table-valued function in a pipeline or query to access the event logs of multiple pipelines.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class="lia-align-justify" style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;You cannot share a view created over the &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;event_log&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; table-valued function with other users.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;This diagram illustrates how DLT in Databricks offers unified observability by combining visual pipeline monitoring, configurable event logging, and structured audit trails. A sample DLT pipeline with bronze, Silver, and gold layers shows real-time execution status and data volumes. Event log configuration allows users to define where logs are stored, such as in the Unity Catalog under the &lt;/SPAN&gt;&lt;FONT color="#339966"&gt;&lt;SPAN&gt;main.monitoring.event_log_sales_pipeline&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;. The DLT UI displays a livestream of pipeline events, while the underlying Delta table captures structured log data including event type, timestamp, and user actions. This integration enables both immediate visual feedback and advanced programmatic monitoring, streamlining debugging, auditing, and alerting workflows.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DLT Monitoring Event Configuration" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16652i92278B49FD955CDF/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="DLT Monitoring Event Configuration" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;DLT Monitoring Event Configuration&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;1.2.1 Dissecting the Event Logs for Non-Technical Personas&lt;/H3&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;We can navigate to Genie space using the “&lt;/SPAN&gt;&lt;STRONG&gt;Ask Genie&lt;/STRONG&gt;&lt;SPAN&gt;” option in the Sample data pane enables users to interact with their datasets using natural language queries. We can ask queries as shown in the snippet below:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Sales Event Log Table Analysis via Genie Space" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16653i20359967C589FF8E/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Sales Event Log Table Analysis via Genie Space" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Sales Event Log Table Analysis via Genie Space&lt;/span&gt;&lt;/span&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Genie dynamically adjusts its responses according to user feedback, which can be verified via the ‘&lt;/SPAN&gt;&lt;STRONG&gt;Show code&lt;/STRONG&gt;&lt;SPAN&gt;’ option.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;1.2.2 Dissecting the Event Logs using the SQL Editor&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Users can sometimes use the SQL Editor to create more granular queries that could power the AI/BI dashboards.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Consider this scenario - the user wants to get the count of the passing and failing records for all the Data Quality checks that are set in the DLT code. Then, the following query is one way of achieving this:&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;-- Create or replace a temporary view named latest_update that selects the most recent 'create_update' event
CREATE OR REPLACE TEMP VIEW latest_update AS SELECT origin.update_id AS id FROM `event_log_sales_pipeline`
WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;


-- Select dataset, expectation name, and the sum of passing and failing records for each expectation
SELECT
 row_expectations.dataset as dataset,
 row_expectations.name as expectation,
 SUM(row_expectations.passed_records) as passing_records,
 SUM(row_expectations.failed_records) as failing_records
FROM
 (
   -- Explode the JSON array of expectations into individual rows
   SELECT
     explode(
       from_json(
         details :flow_progress :data_quality :expectations,
         "array&amp;lt;struct&amp;lt;name: string, dataset: string, passed_records: int, failed_records: int&amp;gt;&amp;gt;"
       )
     ) row_expectations
   FROM
     `event_log_sales_pipeline`,
     latest_update
   WHERE
     event_type = 'flow_progress'
     AND origin.update_id = latest_update.id
 )
GROUP BY
 row_expectations.dataset,
 row_expectations.name;&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;This SQL query leverages the custom event log table (&lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;event_log_sales_pipeline&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;) in the metastore to derive data quality metrics by analyzing the latest pipeline updates. Specifically:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI class="lia-align-left" style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;It extracts and aggregates metrics related to expectations, such as &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;passing_records&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;failing_records&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; counts, from the following&amp;nbsp;JSON field:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;PRE&gt;&lt;STRONG&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;details:flow_progress:data_quality:expectations&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/PRE&gt;
&lt;UL&gt;
&lt;LI class="lia-align-justify" style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;It ensures analysis is focused on the most recent pipeline update by filtering using &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;event_type = 'flow_progress'&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; and matching &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;update_id&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; with the latest value in the &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#339966"&gt;&lt;SPAN&gt;latest_update&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; temporary view.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class="lia-align-justify" style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Results are grouped by the dataset and expectation name, providing a concise summary of data quality performance per dataset.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;This is the result generated from this query:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pass &amp;amp; Fail Record Count Split on silver_quotes table" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16654iD3B18A25F6B208C9/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Pass &amp;amp; Fail Record Count Split on silver_quotes table" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Pass &amp;amp; Fail Record Count Split on silver_quotes table&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;In another scenario, if your DLT pipeline stores the output in HMS, you can query the event log delta table by pointing to the event log folder (event logs are captured and stored in the system/event folder under the storage location of the DLT pipeline).&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;SELECT * FROM delta.`&amp;lt;event_log_path&amp;gt;`&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;If the user wants to query the top 10 most frequent exception class names, they can run the following command:&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;-- Select the top 10 most frequent exception class names from the exploded error.exceptions array
SELECT exception.class_name, COUNT(*) AS occurrence
FROM main.monitoring.event_log_sales_pipeline
LATERAL VIEW EXPLODE(error.exceptions) AS exception
GROUP BY exception.class_name
ORDER BY occurrence DESC
LIMIT 10; -- you can change this value to get more results&lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN&gt;This is a sample result from the query above:&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Frequency of Error Classes generated from Event Log Table" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16655iB3C44E78CFA7A20E/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Frequency of Error Classes generated from Event Log Table" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Frequency of Error Classes generated from Event Log Table&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;To measure the average interval between events for a specific pipeline to monitor activity frequency or detect lulls, we can write the following query:&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;WITH event_times AS (
 -- Selects timestamps from the event log for the 'Quotes Processing Pipeline' and orders them chronologically
 SELECT timestamp
 FROM main.monitoring.event_log_sales_pipeline
 WHERE origin.pipeline_name = 'Quotes Processing Pipeline'
 ORDER BY timestamp
),
diffs AS (
 -- Calculates the difference between consecutive timestamps using the LEAD function
 SELECT timestamp, LEAD(timestamp) OVER (ORDER BY timestamp) AS next_timestamp
 FROM event_times
)
-- Computes the average time difference between consecutive events in seconds
SELECT CONCAT(ROUND(AVG(UNIX_TIMESTAMP(next_timestamp) - UNIX_TIMESTAMP(timestamp))/1000, 2), ' seconds') AS avg_seconds_between_events
FROM diffs
WHERE next_timestamp IS NOT NULL;&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;This will yield a result of the average time interval between all the events that are getting logged:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Average Latency (seconds) between two consecutive events" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16656iDB0A5984C3360408/image-size/medium?v=v2&amp;amp;px=400" role="button" title="image.png" alt="Average Latency (seconds) between two consecutive events" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Average Latency (seconds) between two consecutive events&lt;/span&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Finally, we can make use of the &lt;FONT face="courier new,courier" color="#339966"&gt;event_log&lt;/FONT&gt; table’s &lt;/SPAN&gt;&lt;SPAN&gt;maturity&lt;/SPAN&gt;&lt;SPAN&gt; property to indicate the stability of the event schema:&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;-- This query selects the maturity level of events, counts the total number of events for each maturity level,
-- and sums the number of fatal errors for each maturity level. The results are grouped by maturity level and
-- ordered by the total number of events in descending order.
SELECT maturity_level, COUNT(*) AS total_events,
      SUM(CASE WHEN error.fatal THEN 1 ELSE 0 END) AS fatal_errors
FROM main.monitoring.event_log_sales_pipeline
GROUP BY maturity_level
ORDER BY total_events DESC;&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;This will yield the following result:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LingeshK_1-1746632421702.png" style="width: 730px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16637i6154E9ED4DBA47DE/image-dimensions/730x123?v=v2" width="730" height="123" role="button" title="LingeshK_1-1746632421702.png" alt="LingeshK_1-1746632421702.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Maturity levels, introduced in &lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/gcp/en/release-notes/dlt/2022/37/#:~:text=Event%20log%20entries%20now%20contain%20the%20maturity%20property%20to%20indicate%20the%20stability%20of%20the%20event%20schema" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;DLT release 2022.37&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;, indicate the stability of event schemas within the pipeline's event log.&amp;nbsp;&lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#008000"&gt;&lt;SPAN&gt;STABLE&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; events have guaranteed schemas that will not change across DLT versions, making them dependable anchors for monitoring solutions. In contrast, &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#008000"&gt;&lt;SPAN&gt;EVOLVING&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; events have schemas that may change in future releases.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;The higher proportion of &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#008000"&gt;&lt;SPAN&gt;STABLE&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; events (65) versus &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#008000"&gt;&lt;SPAN&gt;EVOLVING&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; events (17) suggests this pipeline has settled chiefly into reliable event patterns, which is preferable for production environments.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Utilizing the built-in &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#008000"&gt;&lt;SPAN&gt;event_log&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;&amp;nbsp;table in DLT is helpful for monitoring and identifying data quality trends in the pipelines, offering insights into the effectiveness of expectations defined within the system.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;1.2.3 Building Dashboards from the DLT Event Log Table&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;You can then embed these queries into the AI/BI dashboard as custom SQL queries in the “&lt;STRONG&gt;Data&lt;/STRONG&gt;” pane. One simple example is to set the dataset to the custom event log table and use either the assistant or the visualization widget toolbar to create appropriate visualizations.&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;SELECT * FROM main.monitoring.event_log_sales_pipeline;&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Below is an example of how the visualizations are built on top of the dataset that captures all the records of the &lt;/SPAN&gt;&lt;FONT face="courier new,courier" color="#008000"&gt;&lt;SPAN&gt;main.monitoring.event_log_sales_pipeline&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; event log table.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Event Log Sales Pipeline Dashboard" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16657iADE070EE84D76B84/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Event Log Sales Pipeline Dashboard" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Event Log Sales Pipeline Dashboard&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H2&gt;1.3 System Tables for Monitoring&lt;/H2&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Databricks &lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/admin/system-tables#which-system-tables-are-available" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;system tables&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt; offer structured metadata across pipelines, jobs, and clusters, enabling easy alerting using SQL. These tables can be queried directly or integrated with dashboards, alerts, and workflows to automate monitoring.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Below are some common system tables used for monitoring DLT pipelines:&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-level="1"&gt;&lt;A href="https://docs.databricks.com/aws/en/admin/system-tables/audit-logs" target="_self"&gt;&lt;FONT face="courier new,courier" color="#008000"&gt;&lt;STRONG&gt;system.access.audit&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI aria-level="1"&gt;&lt;A href="https://docs.databricks.com/aws/en/admin/system-tables/billing" target="_self"&gt;&lt;FONT face="courier new,courier" color="#008000"&gt;&lt;STRONG&gt;system.billing.usage&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI aria-level="1"&gt;&lt;A href="https://docs.databricks.com/aws/en/admin/system-tables/pricing" target="_self"&gt;&lt;FONT face="courier new,courier" color="#008000"&gt;&lt;STRONG&gt;system.billing.list_prices&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;These tables can be queried directly or integrated with dashboards, alerts, and workflows to automate monitoring and incident response.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;&lt;FONT size="6"&gt;&lt;STRONG&gt;2.&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;From Metrics to Monitoring: Internal Observability Tools&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class="lia-align-justify"&gt;Once your event logs are available in Unity Catalog (see previous section for setup and queries), you can query and display them with visual dashboards, alerts, streaming tables, and third-party tools.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LingeshK_0-1746632785660.png" style="width: 698px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16640i8B8812B1FCC053D4/image-dimensions/698x301?v=v2" width="698" height="301" role="button" title="LingeshK_0-1746632785660.png" alt="LingeshK_0-1746632785660.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;2.1 Monitoring Metrics within Databricks&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Below are three practical ways to bring your metrics into actionable monitoring.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;2.1.1 Visualise with AI/BI Databricks Dashboards&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;You can turn your SQL queries (e.g., pipeline error counts or failure statuses) into &lt;/SPAN&gt;&lt;A href="https://www.databricks.com/product/business-intelligence" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;AI/BI dashboards&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;. Users can build charts and graphs to analyze the pipelines. Check out our dedicated &lt;/SPAN&gt;&lt;A href="https://www.databricks.com/resources/demos/tutorials#:~:text=retail%2Dc360%27)-,Explore%20all%20tutorials,-Lakehouse%20Platform" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;DBdemos&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt; page to forge a similar dashboard as shown below.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LingeshK_1-1746632836295.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16641i327AFFF7A2F938D7/image-size/large?v=v2&amp;amp;px=999" role="button" title="LingeshK_1-1746632836295.png" alt="LingeshK_1-1746632836295.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;&lt;STRONG&gt;2.1.2 Set up SQL Alerts for Proactive Monitoring&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;Another helpful Databricks feature is&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/sql/user/alerts/" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;SQL alerts&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;. You can set up these alerts to monitor any pipeline discrepancies (i.e., table count exceeding the expected limit)&amp;nbsp; and send notifications via SQL alerts or &lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/admin/workspace-settings/notification-destinations" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;webhooks&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;&lt;STRONG&gt;2.1.3 Build Streaming Tables for Monitoring&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;For continuous monitoring, you can convert the event log into a streaming table. This is especially useful when you want to detect and respond to issues, such as failed jobs and error messages, as soon as they appear in the logs.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Below is an example script on how to create an event log streaming table via a notebook:&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;df = spark.readStream.table("main.monitoring.event_log_sales_pipeline") \
    .filter("level = 'ERROR'")

df.writeStream \
  .format("delta") \
.option("checkpointLocation","/Volumes/main/monitoring/event_log_errors_stream_checkpoint") \
  .outputMode("append") \
  .table("main.monitoring.event_log_errors_stream")&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Instead of directly querying the raw event log table repeatedly, which can be inefficient, you can create a dedicated streaming table with a filtered subset (e.g., error-level events). This has several advantages:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Improved performance&lt;/STRONG&gt;&lt;SPAN&gt;: Queries on smaller, filtered tables are faster and more efficient.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Data isolation&lt;/STRONG&gt;&lt;SPAN&gt;: Only the relevant data (e.g., errors) is shared, keeping the whole event log private.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Note: Although this is a streaming table, updates will only occur after the pipeline has finished running. This is because the DLT event log is written at the end of each pipeline run, not continuously during execution.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;&lt;FONT size="6"&gt;&lt;STRONG&gt;3.&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;Example Scenario&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;A major retail chain implemented DLT to process its daily sales data across thousands of stores nationwide. Their pipeline followed the medallion architecture shown in the diagram: ingesting raw sales data from cloud storage and message queues into Bronze tables, transforming it into validated customer and order records in Silver, and finally creating aggregated daily sales views in the Gold layer for business consumption.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Initially, the pipeline operated smoothly, but as data volumes grew with the business expansion, the operations team began noticing concerning patterns. Daily pipeline runs were increasingly failing during peak sales periods, particularly following weekend promotions when transaction volumes spiked significantly.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;The team investigated using DLT’s built-in monitoring capabilities. Analyzing the DLT event log uncovered a correlation between cost spikes and excessive autoscaling behaviour in their cluster configuration.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="High Level End-to-End flow of DLT pipeline Monitoring Process" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16658i4FEC193FA880D7C9/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="High Level End-to-End flow of DLT pipeline Monitoring Process" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;High Level End-to-End flow of DLT pipeline Monitoring Process&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H1&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1&gt;&lt;FONT size="6"&gt;&lt;STRONG&gt;4.&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Don’t let monitoring be an afterthought. Leverage our observability capabilities to monitor pipeline performance and data quality anomalies.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;span class="lia-unicode-emoji" title=":rocket:"&gt;🚀&lt;/span&gt;&lt;/SPAN&gt;&lt;STRONG&gt; Take action:&lt;/STRONG&gt;&lt;SPAN&gt; Start implementing pipeline monitoring, leverage the event log, and integrate with your observability stack to unlock the full power of DLT today!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&lt;SPAN&gt;Check out the &lt;A href="https://community.databricks.com/" target="_blank" rel="noopener"&gt;Databricks Community&lt;/A&gt; for even more exciting blogs about the latest features of Databricks.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;&lt;FONT size="6"&gt;&lt;STRONG&gt;5.&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;Resources&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://docs.databricks.com/gcp/en/dlt/observability" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;Monitor DLT pipelines | Databricks Documentation&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://docs.azure.cn/en-us/databricks/delta-live-tables/event-hooks" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;Implement custom monitoring of DLT pipelines with event hooks (Public Preview)&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://www.databricks.com/blog/introducing-streaming-observability-workflows-and-dlt-pipelines" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;Introducing Streaming Observability in Workflows and DLT Pipelines&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://docs.databricks.com/aws/en/dlt/" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;What is DLT? | Databricks Documentation&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
    <pubDate>Mon, 19 May 2025 08:23:46 GMT</pubDate>
    <dc:creator>LingeshK</dc:creator>
    <dc:date>2025-05-19T08:23:46Z</dc:date>
    <item>
      <title>Monitoring DLT Pipeline Performance and Best Practices</title>
      <link>https://community.databricks.com/t5/technical-blog/monitoring-dlt-pipeline-performance-and-best-practices/ba-p/118220</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Stop reactive firefighting! Our comprehensive guide &lt;span class="lia-unicode-emoji" title=":ledger:"&gt;📒&lt;/span&gt; will teach you how to proactively monitor Databricks DLT pipelines for optimal performance and data quality&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 19 May 2025 08:23:46 GMT</pubDate>
      <guid>https://community.databricks.com/t5/technical-blog/monitoring-dlt-pipeline-performance-and-best-practices/ba-p/118220</guid>
      <dc:creator>LingeshK</dc:creator>
      <dc:date>2025-05-19T08:23:46Z</dc:date>
    </item>
  </channel>
</rss>

