Skip to main content

Profiler Module

The profiler module lives at ingestion/src/metadata/profiler/. It computes statistical metrics on database tables (row counts, null ratios, histograms, etc.) and publishes the results back to the OpenMetadata server. This guide walks through the architecture top-down: from the workflow trigger, through the metrics system, down to how individual metrics are computed and published.

Directory Layout

Workflow Pipeline

The profiler follows the standard Source → Processor → Sink pattern defined in workflow/profiler.py:

Metrics System

The metrics system is the heart of the profiler. Every metric is a class that knows how to compute itself against a data source.

Metric Type Hierarchy

Metric Registry

All built-in metrics are registered in the Metrics enum (metrics/registry.py):
The MetricRegistry base class makes each enum member callableMetrics.ROW_COUNT() instantiates a RowCount metric.

Metric Computation Order

Metrics are computed in a strict dependency order:
Steps 1–5 run in parallel via a thread pool. Steps 6–7 run sequentially per column after the parallel phase completes.