Available Metrics

The following metrics are supported by Metric Monitors. Users can also define custom metrics using SQL. The metric names for Monitors as Code (MaC) config are listed in the MaC Name column for each metric.

All metrics support either machine learning or manual thresholds. The only exception are the Pipeline metrics listed below, where only machine learning thresholds are supported.

Pipeline

Metrics that detect freshness and volume anomalies. Often used with segmentation. The traditional Pipeline Observability monitors do not support segmentation, so segmented freshness and volume monitoring are addressed through these metrics. Only machine learning thresholds are supported for these metrics.

MetricDescriptionMaC Name
Row countAlerts to unusual spikes or drops in the count of rowsROW_COUNT_CHANGE
Relative row count (%)Alerts to unusual spikes or drops in the count of rows for a particular segment, relative to the overall number of rows (learn more)RELATIVE_ROW_COUNT
Time since last change in row countAlerts to unusually long periods of time since the last change in row countTIME_SINCE_LAST_ROW_COUNT_CHANGE

Uniqueness

Uniqueness metrics check for duplicates in unique keys like UUIDs, and for changes in cardinality.

MetricDescriptionColumn TypesMaC Name
Unique (%)Percentage of unique values across all rowsAllUNIQUE_RATE
Unique (count)Count of unique valuesAllUNIQUE_COUNT
Duplicate (count)Count of duplicate values, calculated as the difference between the total number of rows with non-null values and total number of distinct non-null valuesAllDUPLICATE_COUNT

Completeness

Completeness metrics check for ways that data can be null or otherwise unpopulated.

MetricDescriptionColumn TypesMaC Name
Null (%)Percentage of rows where value is nullAllNULL_RATE
Null (count)Count of rows with null valueAllNULL_COUNT
Non-null (count)Count of rows with non-null valueAllNON_NULL_COUNT
Empty string (%)Percentage of rows where the value is an empty stringStringEMPTY_STRING_RATE
Empty string (count)Count of rows where the value is an empty stringStringEMPTY_STRING_COUNT
All spaces (%)Percentage of rows where the text value is whitespace onlyStringTEXT_ALL_SPACE_RATE
All spaces (count)Count of rows where the text value is whitespace onlyStringTEXT_ALL_SPACE_COUNT
NaN (%)Percentage of rows with a value of NaN (Not a Number), meaning the value is undefinedNumericNAN_RATE
NaN (count)Count of rows with a value of NaN (Not a Number), meaning the value is undefinedNumericNAN_COUNT
"none" or "null" (%)Percentage of rows where the text value is a null keyword ("none", "null", "nil", "nothing" or "n/a")StringTEXT_NULL_KEYWORD_RATE
"none" or "null" (count)Count of rows where the text value is a null keyword ("none", "null", "nil", "nothing" or "n/a")StringTEXT_NULL_KEYWORD_COUNT

Distribution

Distribution metrics check for shifts in the numeric profile of data.

MetricDescriptionColumn TypesMaC Name
MeanAverage value across all rowsNumericNUMERIC_MEAN
MedianMedian value across all rowsNumericNUMERIC_MEDIAN
MinMinimum value across all rowsNumericNUMERIC_MIN
MaxMaximum value across all rowsNumericNUMERIC_MAX
20th percentile20th percentile of valuesNumericPERCENTILE_20
40th percentile40th percentile of valuesNumericPERCENTILE_40
60th percentile60th percentile of valuesNumericPERCENTILE_60
80th percentile80th percentile of valuesNumericPERCENTILE_80
Zero (%)Percentage rows with value equal to zeroNumericZERO_RATE
Zero (count)Count of rows with value equal to zeroNumericZERO_COUNT
Negative (%)Percentage of rows that have a negative valueNumericNEGATIVE_RATE
Negative (count)Count of rows that have a negative valueNumericNEGATIVE_COUNT
Standard deviationStandard deviation of valuesNumericNUMERIC_STDDEV
SumSum of values across all rowsNumericSUM
True (%)Percentage of rows where the value is trueBooleanTRUE_RATE
True (count)Count of rows where the value is trueBooleanTRUE_COUNT
False (%)Percentage of rows where the value is falseBooleanFALSE_RATE
False (count)Count of rows where the value is falseBooleanFALSE_COUNT

Validity

Validity metrics check that values are honoring expected and usable formats, including common data entry errors.

MetricDescriptionColumn TypesMaC Name
String length maxMaximum character lengthStringTEXT_MAX_LENGTH
String length minMinimum character lengthStringTEXT_MIN_LENGTH
String length meanAverage character lengthStringTEXT_MEAN_LENGTH
String length standard deviationStandard deviation of character lengthStringTEXT_STD_LENGTH
Integer (%)Percentage of rows where the text value is an integerStringTEXT_INT_RATE
Not integer (count)Count of rows where the text value is not an integerStringTEXT_NOT_INT_COUNT
Float (%)Percentage of rows where the text value is a floating-point numberStringTEXT_NUMBER_RATE
Not float (count)Count of rows where the text value is not a floating-point numberStringTEXT_NOT_NUMBER_COUNT
UUID (%)Percentage of rows where the text value is a UUID (e.g., b391e7d2-80e0-4749-8c60-c76031c43dfe). The comparison is case insensitive.StringTEXT_UUID_RATE
Not UUID (count)Count of rows where the text value is not a UUID (e.g., b391e7d2-80e0-4749-8c60-c76031c43dfe). The comparison is case insensitive.StringTEXT_NOT_UUID_COUNT
SSN (%)Percentage of rows where the text value is formatted as Social Security Number from the United States (e.g., 123-45-6789)StringTEXT_SSN_RATE
Not SSN (count)Count of rows where the text value is not formatted as Social Security Number from the United States (e.g., 123-45-6789)StringTEXT_NOT_SSN_COUNT
USA phone number (%)Percentage of rows where the text value is a USA phone number (e.g., (123) 456-7890, +1 (123) 456-7890 etc)StringTEXT_US_PHONE_RATE
Not USA phone number (count)Count of rows where the text value is not a USA phone number (e.g., (123) 456-7890, +1 (123) 456-7890 etc)StringTEXT_NOT_US_PHONE_COUNT
USA state code (%)Percentage of rows where the text value is a two-letter USA state or territory abbreviation (e.g., TX)StringTEXT_US_STATE_CODE_RATE
Not USA state code (count)Count of rows where the text value is not a two-letter USA state or territory abbreviation (e.g., TX)StringTEXT_NOT_US_STATE_CODE_COUNT
USA ZIP code (%)Percentage of rows where the text value is a USA ZIP code (e.g., 94109)StringTEXT_US_ZIP_CODE_RATE
Not USA ZIP code (count)Count of rows where the text value is not a USA ZIP code (e.g., 94109)StringTEXT_NOT_US_ZIP_CODE_COUNT
Email (%)Percentage of rows where the text value is an email address (e.g., [email protected])StringTEXT_EMAIL_ADDRESS_RATE
Not email (Count)Count of rows where the text value is not an email address (e.g., [email protected])StringTEXT_NOT_EMAIL_ADDRESS_COUNT
Timestamp (%)Percentage of rows where the text value is an ISO-8601 format date or timestamp (e.g., 2023-01-12 16:50:11.045746 +00:00, 2023-01-12T16:50:11Z)StringTEXT_TIMESTAMP_RATE
Not timestamp (count)Count of rows where the text value is not an ISO-8601 format date or timestamp (e.g., 2023-01-12 16:50:11.045746 +00:00, 2023-01-12T16:50:11Z)StringTEXT_NOT_TIMESTAMP_COUNT
In past (%)Percentage of rows where the value is a date or time occurring before the time when the metric is evaluated, with a granularity of seconds used for comparisonDatePAST_TIMESTAMP_RATE
In past (count)Count of rows where the value is a date or time occurring before the time when the metric is evaluated, with a granularity of seconds used for comparisonDatePAST_TIMESTAMP_COUNT
In future (%)Percentage of rows where the value is a date or time occurring after the time when the metric is evaluated, with a granularity of seconds used for comparisonDateFUTURE_TIMESTAMP_RATE
In future (count)Count of rows where the value is a date or time occurring after the time when the metric is evaluated, with a granularity of seconds used for comparisonDateFUTURE_TIMESTAMP_COUNT
Unix time 0 (%)Percentage of rows where the value is Unix time 0DateUNIX_ZERO_RATE
Unix time 0 (count)Count of rows where the value is Unix time 0DateUNIX_ZERO_COUNT

Relative row count

Relative row count will alert to sudden shifts in the distribution of categorical fields. It tracks the percentage of rows in a given segment compared to the overall number of rows, and alerts when the percentage for a segment suddenly spikes higher or drops lower. Because of this, segmentation is required when using this metric. Common examples:

  • An events table has an app_version field. The user would like to be alerted if any app_version is suddenly receiving a disproportionately high or low number of rows relative to overall volume, as it may indicate issues with that version.
  • An orders table has a country field. The user would like to be alerted if any country is suddenly receiving a disproportionately high or low number of rows relative to overall volume, as it may indicate an issue with processing order from that country.

Relative row count can also alert when new segments appear, so long as they represent a significant shift in the distribution of rows. However, to always alert when any new segment appears, we recommend configuring a Validation monitor with the is not in set operator.

Relative row count was formerly its own monitor type called Dimension Tracking. Starting in October 2024, Dimension Tracking monitors could no longer be created through the UI and users were guided to use relative row count instead.