Implementation:Evidentlyai Evidently Legacy Generate Column Metrics
| Knowledge Sources | |
|---|---|
| Domains | ML Monitoring, Metrics |
| Last Updated | 2026-02-14 12:00 GMT |
Overview
generate_column_metrics is a utility function that creates a generator for applying a given metric class across multiple dataset columns.
Description
The generate_column_metrics function is a convenience wrapper around make_generator_by_columns. It takes a metric class (a subclass of Metric) and produces a BaseGenerator[Metric] that will instantiate that metric for each column matching the given criteria.
The function supports:
- Specifying a list of column names or a single column name to target
- Passing additional parameters to the metric constructor via a dictionary
- Optionally skipping the ID column in the dataset
This is useful for situations where you want to apply the same metric (e.g., drift detection, summary statistics) to many columns without manually creating individual metric instances.
Usage
Use this function when you need to apply a single metric class to multiple columns in a dataset. It simplifies report configuration by replacing repetitive metric instantiation with a single generator call.
Code Reference
Source Location
- Repository: Evidentlyai_Evidently
- File:
src/evidently/legacy/metrics/base_metric.py
Signature
def generate_column_metrics(
metric_class: Type[Metric],
columns: Optional[Union[str, list]] = None,
parameters: Optional[Dict] = None,
skip_id_column: bool = False,
) -> BaseGenerator[Metric]:
"""Function for generating metrics for columns"""
return make_generator_by_columns(
base_class=metric_class,
columns=columns,
parameters=parameters,
skip_id_column=skip_id_column,
)
Import
from evidently.legacy.metrics.base_metric import generate_column_metrics
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| metric_class | Type[Metric] |
Yes | The metric class to instantiate for each column. |
| columns | Optional[Union[str, list]] |
No | A column name or list of column names to generate metrics for. If None, columns are inferred from the dataset.
|
| parameters | Optional[Dict] |
No | Additional keyword arguments to pass to each metric instance constructor. |
| skip_id_column | bool |
No | If True, the ID column is excluded from metric generation. Defaults to False.
|
Outputs
| Name | Type | Description |
|---|---|---|
| return | BaseGenerator[Metric] |
A generator object that produces metric instances for each target column when the report is executed. |
Usage Examples
from evidently.legacy.metrics.base_metric import generate_column_metrics
from evidently.legacy.metrics import ColumnDriftMetric
from evidently.legacy.report import Report
# Generate drift metrics for specific columns
report = Report(metrics=[
generate_column_metrics(ColumnDriftMetric, columns=["age", "income", "score"])
])
report.run(reference_data=ref_df, current_data=curr_df)
# Generate drift metrics for all columns, skipping the ID column
report = Report(metrics=[
generate_column_metrics(ColumnDriftMetric, skip_id_column=True)
])
report.run(reference_data=ref_df, current_data=curr_df)
# Generate metrics with additional parameters
report = Report(metrics=[
generate_column_metrics(
ColumnDriftMetric,
columns=["feature_1", "feature_2"],
parameters={"stattest": "ks"},
)
])
report.run(reference_data=ref_df, current_data=curr_df)