Data Observability Metrics Pack
SQL scorecard computing freshness, volume anomaly, and PK quality scores with a composite health rating. Schedule daily against critical tables and persist to an ops mart.
Data ObservabilityIntermediateSQL
Code preview
104 linesReplace {{PLACEHOLDERS}} with your environment values, then deploy to your stack.
-- =============================================================================
-- DATA OBSERVABILITY METRICS PACK (SQL)
-- Run against your warehouse to score freshness, volume, schema, and quality.
-- Replace {{PLACEHOLDERS}} and schedule as a daily observability job.
-- =============================================================================
-- ── CONFIGURATION ────────────────────────────────────────────────────────────
-- Target table: {{DATABASE}}.{{SCHEMA}}.{{TABLE}}
-- PK column: {{PK_COLUMN}}
-- Date column: {{DATE_COLUMN}}
-- Loaded at col: {{LOADED_AT_COLUMN}}
WITH config AS (
SELECT
'{{DATABASE}}.{{SCHEMA}}.{{TABLE}}' AS full_table_name,
'{{PK_COLUMN}}' AS pk_column,
'{{DATE_COLUMN}}' AS date_column,
'{{LOADED_AT_COLUMN}}' AS loaded_at_column,
24 AS freshness_sla_hours,
0.20 AS volume_anomaly_pct, -- 20% swing triggers alert
7 AS lookback_days
),
-- ── 1. FRESHNESS METRIC ─────────────────────────────────────────────────────
freshness AS (
SELECT
'freshness' AS metric_name,
DATEDIFF('hour', MAX({{LOADED_AT_COLUMN}}), CURRENT_TIMESTAMP()) AS observed_value,
c.freshness_sla_hours AS threshold,
CASE
WHEN DATEDIFF('hour', MAX({{LOADED_AT_COLUMN}}), CURRENT_TIMESTAMP()) <= c.freshness_sla_hours
THEN 1 ELSE 0
END AS score
FROM {{DATABASE}}.{{SCHEMA}}.{{TABLE}}, config c
),
-- ── 2. VOLUME METRIC (today vs 7-day avg) ─────────────────────────────────────
daily_volume AS (
SELECT
DATE({{DATE_COLUMN}}) AS dt,
COUNT(*) AS row_count
FROM {{DATABASE}}.{{SCHEMA}}.{{TABLE}}
WHERE {{DATE_COLUMN}} >= DATEADD('day', -7, CURRENT_DATE())
GROUP BY 1
),
volume AS (
SELECT
'volume_anomaly' AS metric_name,
ABS(today.row_count - avg_hist.avg_rows) / NULLIF(avg_hist.avg_rows, 0) AS observed_value,
c.volume_anomaly_pct AS threshold,
CASE
WHEN ABS(today.row_count - avg_hist.avg_rows) / NULLIF(avg_hist.avg_rows, 0) <= c.volume_anomaly_pct
THEN 1 ELSE 0
END AS score
FROM config c
CROSS JOIN (SELECT row_count FROM daily_volume WHERE dt = CURRENT_DATE()) today
CROSS JOIN (SELECT AVG(row_count) AS avg_rows FROM daily_volume WHERE dt < CURRENT_DATE()) avg_hist
),
-- ── 3. QUALITY: PK NULL RATE ──────────────────────────────────────────────────
quality AS (
SELECT
'pk_null_rate' AS metric_name,
SUM(CASE WHEN {{PK_COLUMN}} IS NULL THEN 1 ELSE 0 END)::FLOAT / NULLIF(COUNT(*), 0) AS observed_value,
0.001 AS threshold,
CASE
WHEN SUM(CASE WHEN {{PK_COLUMN}} IS NULL THEN 1 ELSE 0 END)::FLOAT / NULLIF(COUNT(*), 0) <= 0.001
THEN 1 ELSE 0
END AS score
FROM {{DATABASE}}.{{SCHEMA}}.{{TABLE}}
WHERE {{DATE_COLUMN}} >= DATEADD('day', -1, CURRENT_DATE())
),
-- ── 4. COMPOSITE OBSERVABILITY SCORECARD ─────────────────────────────────────
scorecard AS (
SELECT * FROM freshness
UNION ALL SELECT * FROM volume
UNION ALL SELECT * FROM quality
)
// ... download full template for remaining codeAbout this template
SQL scorecard computing freshness, volume anomaly, and PK quality scores with a composite health rating. Schedule daily against critical tables and persist to an ops mart.
observabilityscorecardsqlmonitoring
Downloads54
Reviews0
Rating-
CreatedJul 2, 2026
UpdatedJul 2, 2026