Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 32

Monitoring DLT Pipelines and Interpreting Event Logs

Recommended resources

Hello! Welcome to the next lesson in our journey through Delta Live Tables.

In our last session, we covered how to configure DLT pipelines for different environments using Development and Production modes. You learned about the trade-offs between iteration speed and operational robustness, a crucial concept for managing the lifecycle of any data product.

Now that your pipelines are configured and running, the next critical task is to understand what's happening inside them. Today's learning outcome is to monitor DLT pipeline execution and interpret the event log. This is where we transition from building pipelines to operating them. We'll cover how to get a quick health check from the Databricks UI and then dive deep into the event log—the definitive source of truth for everything your pipeline does. Your experience building and maintaining data platforms will be valuable here, as we'll be focusing on programmatic ways to ensure reliability and observability.

1. Monitoring from the DLT User Interface

The DLT UI is your first port of call for monitoring. It provides a real-time, visual summary of your pipeline's health and progress.

When you run a pipeline, the UI presents three key areas for monitoring:

  1. The Data Flow Graph (DAG): Visually represents your pipeline's tables and their dependencies. Each node's color and status indicate whether it's setting up, running, completed successfully, or failed.
  2. Data Quality Metrics: The UI overlays key metrics directly onto the graph, showing you the number of records written, dropped, or that failed expectation checks.
  3. The Event Log Stream: A live feed at the bottom of the page shows chronological events as they happen, providing a high-level narrative of the pipeline update.
Databricks Delta Live Tables SQL Pipeline Monitoring Interface
This image provides a comprehensive view of the DLT pipeline UI. You can see the DAG, the 'Data Quality' metrics pane on the right detailing records written vs. dropped, and the live event log at the bottom.

Diagnosing Issues with the UI

The UI is particularly effective for getting a quick diagnosis when things go wrong. Let's see a practical example of how to use the UI to identify and understand pipeline events.

30 DLT Data Quality & Expectations | Monitor DLT pipeline using SQL | Define DQ rule |Observability

This video from Ease With Data demonstrates how to use the DLT UI to both debug a failure and review data quality metrics from a successful run. It's a great real-world example of the UI in action.

Watch from 07:03 to 08:27. The first part shows how a failure is immediately visible in the UI and how clicking the failed event reveals the root cause. The second part shows how, after a fix, the data quality metrics for the completed run are displayed.

When a more severe error occurs, like a cluster failing to start, the event log provides a structured JSON payload with detailed error information. You can access this directly from the UI by clicking on the error event.

Databricks DLT Pipeline Event Log Details (JSON View)
As seen in this image, the JSON view provides granular details about a failure. Here, a 'DataPlaneException' indicates the pipeline cluster failed to launch, a common issue you might need to debug.

While the UI is excellent for immediate feedback, it only tells part of the story. To perform deep analysis, historical tracking, or automated alerting, you need to query the event log directly.


2. The Event Log: Your Pipeline's Source of Truth

Every action, metric, data quality check, and configuration change in a DLT pipeline is recorded in the event log. This log is not just a text file; it is a Delta table, meaning you can query it with SQL just like any other data table in your lakehouse.

This event log is automatically created and stored in a system/events subdirectory within your pipeline's defined storage location.

To learn about the event log and the standard ways to query it, the official Databricks documentation is the best source.

Pipeline event log | Databricks on AWS

This documentation page, 'Pipeline event log', explains what the event log is and provides the primary methods for querying it.

Please read the introduction and the section 'Query the event log'. Focus on the two main access patterns: using the event_log(<pipelineId>) function and publishing the log to a named table in Unity Catalog.

As the documentation states, you have two primary ways to access the log:

  1. Using the event_log() Table-Valued Function (TVF): This is the simplest method for ad-hoc querying. You just need your pipeline's ID.
    SELECT * FROM event_log('YOUR_PIPELINE_ID');
    
  2. Publishing to Unity Catalog: In your pipeline's settings, you can configure it to publish the event log to a specific table in Unity Catalog. This is the best practice for production, as it makes the log discoverable and allows you to manage its permissions like any other data asset.

3. Interpreting the Event Log with SQL

Simply selecting * from the event log reveals that most of the rich information is nested within a details column as a JSON string. To "interpret" the log, you need to parse this JSON. Your experience with SQL and data transformation will be directly applicable here.

Let's explore how to extract meaningful information from this nested structure.

Advancing Spark - Exploring DLT Event Metrics

The video 'Advancing Spark - Exploring DLT Event Metrics' does a fantastic job of showing how to programmatically dissect the event log. It covers the essential techniques for parsing the details column.

Watch from 05:41 to 12:45. Pay close attention to two key techniques: Discovering that the event log is a Delta table in the system/events folder. Using colon (:) notation in SQL to easily query nested fields within the JSON details column (e.g., details:flow_progress.status).

As the video demonstrated, Spark's SQL capabilities make it straightforward to query into the JSON structure. For example, to find the number of output rows for successful data flows, you can write a query like this:

SELECT
  origin.update_id,
  timestamp,
  details:flow_progress.status,
  details:flow_progress.metrics.num_output_rows
FROM event_log('YOUR_PIPELINE_ID')
WHERE
  event_type = 'flow_progress' AND details:flow_progress.status = 'COMPLETED'

Querying Data Quality and Expectations

One of the most powerful use cases for the event log is to monitor data quality trends over time. The results of your DLT expectations are stored within the details:flow_progress:data_quality:expectations field, which is a JSON array.

To analyze this data, you need to flatten the array into rows. This is a classic ETL pattern.

Monitoring DLT Pipeline Performance and Best Practices

The Databricks Community article 'Monitoring DLT Pipeline Performance and Best Practices' provides excellent, ready-to-use SQL queries for common monitoring tasks.

Read the sections 'Event Log' and 'Dissecting the Event Logs using the SQL Editor'. Focus on the SQL query provided that calculates the count of passing and failing records for data quality checks. Notice how it uses from_json and explode to parse the expectations array.

Here is a query, adapted from the article, that summarizes the results of your data quality expectations from the latest pipeline run. This is a powerful template for your own monitoring needs.

-- Find the ID of the latest pipeline update
CREATE OR REPLACE TEMP VIEW latest_update AS
SELECT origin.update_id
FROM event_log('YOUR_PIPELINE_ID')
WHERE event_type = 'create_update'
ORDER BY timestamp DESC
LIMIT 1;

-- Query the data quality metrics from the latest update
SELECT
  expectations.dataset,
  expectations.name AS expectation_name,
  SUM(expectations.passed_records) AS passing_records,
  SUM(expectations.failed_records) AS failing_records
FROM (
  SELECT
    explode(from_json(details:flow_progress:data_quality:expectations, "array<struct<name:string, dataset:string, passed_records:bigint, failed_records:bigint>>")) AS expectations
  FROM event_log('YOUR_PIPELINE_ID')
  WHERE
    event_type = 'flow_progress'
    AND details:flow_progress:data_quality IS NOT NULL
    AND origin.update_id = (SELECT update_id FROM latest_update)
)
GROUP BY
  dataset,
  expectation_name;

This query demonstrates a professional-level pattern:

  1. Isolating the most recent pipeline run.
  2. Using from_json to define a schema for the nested JSON array.
  3. Using explode to transform each element of the array into its own row.
  4. Aggregating the results to create a summary report.

Conclusion

In this lesson, you've learned the fundamental practices for DLT pipeline observability. You now know how to get a quick status check from the UI and, more importantly, how to dive deep into the event log to extract precise operational metrics.

Key Takeaways:

  • UI Monitoring: The DLT UI provides a high-level, real-time view of the pipeline graph, data quality metrics, and a live event stream, making it ideal for quick diagnostics.
  • The Event Log as a Delta Table: The event log is the comprehensive source of truth for all pipeline activities and is stored as a queryable Delta table.
  • Programmatic Access: You can query the event log using the event_log() TVF or by publishing it to a named table in Unity Catalog for better governance.
  • Interpreting with SQL: The key to interpreting the log is parsing the JSON in the details column using SQL's dot notation for simple fields and functions like from_json and explode for complex arrays.

Preview of the Next Lesson:

We have now covered how to build, configure, and monitor a DLT pipeline. In the next lesson, we will focus on diagnosing and resolving DLT pipeline failures using the UI, event log, and built-in recovery actions. We'll move from passively observing to actively troubleshooting, using the event log interpretation skills you've just learned to tackle common failure scenarios.