Coverage

ℹ️

Public preview

The Analytics API is in public preview: on for every account, and features may change. Monitor run metrics are in private preview: reach out to your account representative to request access. See Integration and feature lifecycles for what this means.

Overview

Which tables have an active monitor, where the gaps are among your key tables, and how many monitors you have, day by day.

What it answers

  • What is our monitoring coverage.
  • Which key tables have no monitor.
  • Coverage per data product or domain.
  • Coverage gaps per domain and warehouse.
  • How many monitors exist, are active or erroring, with the error.
  • How many monitors were in error each day, and since when and why a monitor fails to run.
  • Monitors created in a period.
  • Assets discovered or deleted in a period.
🚧

Not covered here

  • Asset health, alerts and incidents (Data quality metrics).
  • Coverage as of a past date or its change over time (only current state is kept).
  • Column-level coverage.
  • Assets covered per monitor tag, audience or monitor domain.

Try asking

What is our monitoring coverage?

The query your agent runs:

  • Metrics: population_assets, covered_assets, coverage_rate, uncovered_key_assets
  • Grouped by: account__account_name
Request (JSON)
{
  "metrics": [
    "population_assets",
    "covered_assets",
    "coverage_rate",
    "uncovered_key_assets"
  ],
  "group_by": ["account__account_name"]
}

Metrics

MetricWhat it counts
asset_countEvery asset, AI agents and excluded ones included, deleted ones when deleted in the last 13 months or still referenced, dated by when Monte Carlo discovered it: for assets discovered in a period. Coverage counts tables with population_assets. Group by: Asset, Warehouse, time.
assets_with_monitorTables in a Table Monitor's scope or with any other monitor that is not deleted, paused and draft included. In the product: Tables with monitors on the Coverage dashboard, which also counts excluded tables and wildcard parts. After a Table Monitor is paused, its tables leave the count over the following hours or days. Group by: Asset, time. Also per asset tag, data product, domain: asset_tag_assets_with_monitor, data_product_assets_with_monitor, domain_assets_with_monitor.
coverage_rateShare of tables that are covered: covered_assets / population_assets. Group by: Asset, time. Also per asset tag, data product, domain: asset_tag_coverage_rate, data_product_coverage_rate, domain_coverage_rate.
covered_assetsTables with at least one active monitor of any kind. Group by: Asset, time. Also per asset tag, data product, domain, monitor: asset_tag_covered_assets, data_product_covered_assets, domain_covered_assets, monitor_covered_assets.
data_product_countData products of the account, with or without tables, deleted ones included (data_product__is_data_product_deleted). Group by: Data product, time.
domain_countDomains of the account, with or without assets, of every type. In the product: Settings > Domains does not list agentic domains; filter domain__domain_type to leave them out. Group by: Domain, time.
erroring_monitor_countActive monitors in status Error (failed to run) on the last day of the selection (today without a date filter). A monitor on many tables counts once. Grouped by day: how many were in error each day. The per-grouping versions (domain_erroring_monitor_count and the like) are today's state only. Group by: Monitor, time. Also per asset tag, audience, data product, domain, monitor domain, monitor tag: asset_tag_erroring_monitor_count, audience_erroring_monitor_count, data_product_erroring_monitor_count, domain_erroring_monitor_count, monitor_domain_erroring_monitor_count, monitor_tag_erroring_monitor_count.
key_assetsKey tables in the coverage population. Group by: Asset, time. Also per asset tag, data product, domain: asset_tag_key_assets, data_product_key_assets, domain_key_assets.
live_monitor_countActive monitors (not paused, deleted or draft) on the last day of the selection (today without a date filter). A monitor on many tables counts once. Grouped by day, week or month: the count on the last day of each. The per-grouping versions (domain_live_monitor_count and the like) are today's state only. Group by: Monitor, time. Also per asset, asset tag, audience, data product, domain, monitor domain, monitor tag: asset_live_monitor_count, asset_tag_live_monitor_count, audience_live_monitor_count, data_product_live_monitor_count, domain_live_monitor_count, monitor_domain_live_monitor_count, monitor_tag_live_monitor_count.
monitor_countMonitors that are not deleted, on the last day of the selection (today without a date filter). A monitor on many tables counts once. Grouped by day, week or month: the count on the last day of each. The per-grouping versions (domain_monitor_count and the like) are today's state only. In the product: the count the Monitors page lists. Group by: Monitor, time. Also per asset, asset tag, audience, data product, domain, monitor domain, monitor tag: asset_monitor_count, asset_tag_monitor_count, audience_monitor_count, data_product_monitor_count, domain_monitor_count, monitor_domain_monitor_count, monitor_tag_monitor_count.
monitor_error_day_countDays an active monitor was in status Error in the selection. Per monitor with its error text, it tells since when and why a monitor fails to run, within the last 35 days. Group by: Monitor, time.
population_assetsTables that coverage counts: not deleted, not excluded, not part of a wildcard table and not in a deleted integration. Filter it on the covered-by dimensions of the table for coverage by monitor type. Group by: Asset, time. Also per asset tag, data product, domain: asset_tag_population_assets, data_product_population_assets, domain_population_assets.
uncovered_key_assetsKey tables with no active monitor: the coverage gaps. Group by: Asset, time. Also per asset tag, data product, domain: asset_tag_uncovered_key_assets, data_product_uncovered_key_assets, domain_uncovered_key_assets.
visibility_only_assetsTables Monte Carlo sees (lineage, metadata) but that are outside the Table Monitor scope, so not monitored by default; other monitors can still cover some of them. In the product: Not monitored. Group by: Asset, time.

Good to know

Grouping and filtering for all metrics, including why the numbers per domain, data product or tag do not add up to the account's: Before you group or filter.

  • Tables counted: Coverage counts tables that are not deleted, not excluded, not part of a wildcard table and not in a deleted integration; AI agents are not counted.
  • Covered: A table with at least one active monitor of any kind (not paused, deleted or draft). assets_with_monitor counts tables in a Table Monitor's scope or with any other monitor that is not deleted, as Tables with monitors on the product's Coverage dashboard, which also counts excluded tables and wildcard parts. asset__is_asset_monitored is the Table Monitor scope, also used for billing.
  • By monitor type: Filter population_assets on asset__is_asset_covered_by_freshness_monitor, asset__is_asset_covered_by_validation_monitor or another covered-by dimension of the table. By creation source, priority or status: monitor_covered_assets grouped by the monitor dimension; a table covered by two kinds of monitor counts in both.
  • Groupings: Per domain, data product and asset tag, the metric starts with the grouping (domain_coverage_rate). A monitor counts in a domain, data product or asset tag when it covers one of its tables, and in a monitor domain, monitor tag or audience when it is assigned to it.
  • Domain: domain__ is the domains of the tables, as the Coverage dashboard's domain filter uses them; monitor_domain__ is the domain monitors are assigned to, as the domain filter of the Monitors and Alerts pages.
  • Gaps without a domain: Per-domain metrics leave out tables in no domain, so a domain by warehouse matrix (domain_uncovered_key_assets) can miss whole warehouses. Show the gaps per warehouse from uncovered_key_assets grouped by warehouse next to it; that total includes every table.
  • Monitor counts: A monitor on many tables counts once, as the product lists monitors; live_monitor_count counts the active ones. The monitors a bulk or generated monitor creates (monitor__parent_monitor_uuid is set) and out-of-the-box replacement rules are not counted.
  • Current state and history: Coverage is today's, with no history yet. Monitor counts (monitor_count, live_monitor_count, erroring_monitor_count) are the count on the last day of the period, today without a date filter; grouped by metric_time__day, __week or __month, the count on the last day of each. Their history is the last 35 days; the API refuses earlier dates with the date the history starts. Grouped by a monitor attribute, a group whose monitors are all deleted (or, for active monitors, paused) on that day returns 0; drop the 0 rows for a breakdown chart. Monitors created in a period: monitor_count by monitor__monitor_created_at; tables discovered in a period: asset_count.
  • Since when a monitor fails to run: monitor_error_day_count grouped by monitor__monitor_uuid with monitor__monitor_name and monitor_status__monitor_status_error_message over the period; group by metric_time__day as well for the days. monitor_status__monitor_status_value is a monitor's status on each day.

Examples

How many assets were discovered in the last 7 days?

  • Metrics: asset_count
  • Filter: metric_time__day on or after 7 days ago
Request (JSON)
{
  "metrics": ["asset_count"],
  "filters": [
    {
      "field": "metric_time__day",
      "op": "gte",
      "values": ["<7 days ago>"]
    }
  ]
}

Key tables without a monitor per domain and warehouse

  • Metrics: domain_uncovered_key_assets
  • Grouped by: domain__domain_uuid, domain__domain_name, asset__warehouse__warehouse_uuid, asset__warehouse__warehouse_name
Request (JSON)
{
  "metrics": ["domain_uncovered_key_assets"],
  "group_by": [
    "domain__domain_uuid",
    "domain__domain_name",
    "asset__warehouse__warehouse_uuid",
    "asset__warehouse__warehouse_name"
  ]
}

Coverage per data product, lowest first

  • Metrics: data_product_population_assets, data_product_covered_assets, data_product_coverage_rate
  • Grouped by: data_product__data_product_uuid, data_product__data_product_name
  • Filter: data_product__is_data_product_deleted is false
  • Sorted by: data_product_coverage_rate, lowest first
Request (JSON)
{
  "metrics": [
    "data_product_population_assets",
    "data_product_covered_assets",
    "data_product_coverage_rate"
  ],
  "group_by": [
    "data_product__data_product_uuid",
    "data_product__data_product_name"
  ],
  "filters": [
    {
      "field": "data_product__is_data_product_deleted",
      "op": "in",
      "values": [false]
    }
  ],
  "order_by": [{"field": "data_product_coverage_rate"}]
}

Coverage per domain, lowest first

  • Metrics: domain_population_assets, domain_covered_assets, domain_coverage_rate
  • Grouped by: domain__domain_uuid, domain__domain_name
  • Sorted by: domain_coverage_rate, lowest first
Request (JSON)
{
  "metrics": [
    "domain_population_assets",
    "domain_covered_assets",
    "domain_coverage_rate"
  ],
  "group_by": ["domain__domain_uuid", "domain__domain_name"],
  "order_by": [{"field": "domain_coverage_rate"}]
}

How many monitors were in error each day over the last 30 days?

  • Metrics: erroring_monitor_count, live_monitor_count
  • Grouped by: metric_time__day
  • Filter: metric_time__day on or after 30 days ago
Request (JSON)
{
  "metrics": [
    "erroring_monitor_count",
    "live_monitor_count"
  ],
  "group_by": ["metric_time__day"],
  "filters": [
    {
      "field": "metric_time__day",
      "op": "gte",
      "values": ["<30 days ago>"]
    }
  ]
}

Erroring monitors per asset tag

  • Metrics: asset_tag_population_assets, asset_tag_erroring_monitor_count
  • Grouped by: asset_tag__asset_tag_name, asset_tag__asset_tag_value
  • Sorted by: asset_tag_erroring_monitor_count, highest first
Request (JSON)
{
  "metrics": [
    "asset_tag_population_assets",
    "asset_tag_erroring_monitor_count"
  ],
  "group_by": [
    "asset_tag__asset_tag_name",
    "asset_tag__asset_tag_value"
  ],
  "order_by": [
    {
      "field": "asset_tag_erroring_monitor_count",
      "descending": true
    }
  ]
}

Which monitors are erroring right now, and with what error?

  • Metrics: erroring_monitor_count
  • Grouped by: monitor__monitor_uuid, monitor__monitor_name, monitor__monitor_type, monitor__monitor_error_message
  • Filter: monitor__is_monitor_erroring is true
Request (JSON)
{
  "metrics": ["erroring_monitor_count"],
  "group_by": [
    "monitor__monitor_uuid",
    "monitor__monitor_name",
    "monitor__monitor_type",
    "monitor__monitor_error_message"
  ],
  "filters": [
    {
      "field": "monitor__is_monitor_erroring",
      "op": "in",
      "values": [true]
    }
  ]
}

Which key tables have no monitor, most important first?

  • Metrics: uncovered_key_assets
  • Grouped by: asset__asset_mcon, asset__asset_full_table_id, asset__warehouse__warehouse_name, asset__asset_importance_score
  • Sorted by: asset__asset_importance_score, highest first
Request (JSON)
{
  "metrics": ["uncovered_key_assets"],
  "group_by": [
    "asset__asset_mcon",
    "asset__asset_full_table_id",
    "asset__warehouse__warehouse_name",
    "asset__asset_importance_score"
  ],
  "order_by": [
    {
      "field": "asset__asset_importance_score",
      "descending": true
    }
  ]
}

Active monitors by type

  • Metrics: live_monitor_count
  • Grouped by: monitor__monitor_type
  • Sorted by: live_monitor_count, highest first
Request (JSON)
{
  "metrics": ["live_monitor_count"],
  "group_by": ["monitor__monitor_type"],
  "order_by": [
    {"field": "live_monitor_count", "descending": true}
  ]
}

Which monitors failed to run in the last 30 days, for how many days, and why?

  • Metrics: monitor_error_day_count
  • Grouped by: monitor__monitor_uuid, monitor__monitor_name, monitor_status__monitor_status_error_message
  • Filter: metric_time__day on or after 30 days ago
  • Sorted by: monitor_error_day_count, highest first
  • At most 50 rows
Request (JSON)
{
  "metrics": ["monitor_error_day_count"],
  "group_by": [
    "monitor__monitor_uuid",
    "monitor__monitor_name",
    "monitor_status__monitor_status_error_message"
  ],
  "filters": [
    {
      "field": "metric_time__day",
      "op": "gte",
      "values": ["<30 days ago>"]
    }
  ],
  "order_by": [
    {"field": "monitor_error_day_count", "descending": true}
  ],
  "limit": 50
}

Monitors created in the last month, by creation source

  • Metrics: monitor_count
  • Grouped by: monitor__monitor_creation_source
  • Filter: monitor__monitor_created_at__day on or after 1 month ago
Request (JSON)
{
  "metrics": ["monitor_count"],
  "group_by": ["monitor__monitor_creation_source"],
  "filters": [
    {
      "field": "monitor__monitor_created_at__day",
      "op": "gte",
      "values": ["<1 month ago>"]
    }
  ]
}

Key tables without a monitor per warehouse

  • Metrics: uncovered_key_assets, key_assets
  • Grouped by: asset__warehouse__warehouse_uuid, asset__warehouse__warehouse_name
  • Sorted by: uncovered_key_assets, highest first
Request (JSON)
{
  "metrics": ["uncovered_key_assets", "key_assets"],
  "group_by": [
    "asset__warehouse__warehouse_uuid",
    "asset__warehouse__warehouse_name"
  ],
  "order_by": [
    {"field": "uncovered_key_assets", "descending": true}
  ]
}

See also


Did this page help you?