{% if logo_data_uri %}{% endif %}

scherlok

Data quality report · v{{ meta.version }}
{{ meta.project_name }}
{{ meta.connection }}
Generated {{ meta.generated_at }}
{% if meta.last_watch_human != "—" %}
Last scherlok watch: {{ meta.last_watch_human }} · Baseline window: {{ meta.baseline_window_days }} days
{% endif %}
Tables monitored
{{ kpis.tables_monitored }}
{{ kpis.coverage_label }}
Critical incidents
{{ kpis.critical }}
latest watch run
Warnings
{{ kpis.warnings }}
latest watch run
History window
{{ kpis.history_days }}d
past anomalies
{% if dbt_context %}

dbt context

d
{{ dbt_context.project_name }} · target/manifest.json
{{ dbt_context.adapter }} adapter · {{ dbt_context.models_count }} materialized models
Models: {{ dbt_context.models_count }}
Sources: {{ dbt_context.sources_count }}
{% endif %}
{% if incidents %}

Active incidents · {{ incidents | length }} incident{{ 's' if incidents | length != 1 else '' }} · {{ symptom_count }} symptom{{ 's' if symptom_count != 1 else '' }} · grouped by table

{% for incident in incidents %}
{{ incident.severity }} {{ incident.table }} {{ incident.summary }} {% if incident.first_seen %} first seen {{ incident.first_seen | humanize_iso }} {% if incident.last_seen and incident.last_seen != incident.first_seen %} · last {{ incident.last_seen | humanize_iso }} {% endif %} · {% endif %} {{ incident.symptoms | length }} symptom{{ 's' if incident.symptoms | length != 1 else '' }}
{% for symptom in incident.symptoms %}
{{ symptom.message }}
{{ symptom.severity }} · {{ symptom.type }} {% if symptom.detected_at %} · {{ symptom.detected_at | humanize_iso }}{% endif %}
{% if symptom.schema_diff %}
{% for entry in symptom.schema_diff %} {% if entry.kind == "added" %}
+{{ entry.column }}{{ entry.new_type }}
{% elif entry.kind == "removed" %}
{{ entry.column }}
{% else %}
~{{ entry.column }}{{ entry.old_type }} → {{ entry.new_type }}
{% endif %} {% endfor %}
{% endif %}
{% endfor %}
{% endfor %} {% else %}

Active incidents

No active incidents
Last scherlok watch: {{ meta.last_watch_human }}
{% endif %}
{% if tables %}

Table health

{% for t in tables %} {% endfor %}
Table Status Rows Trend ({{ kpis.history_days }}d) Cols Last profiled
{{ t.name }} {{ t.status | capitalize }} {{ "{:,}".format(t.rows) }} {{ t.cols }} {{ t.last_profiled }}
{% endif %} {% if history %}

Recent anomaly history ({{ kpis.history_days }} days)

{% for h in history %} {% endfor %}
Detected at Severity Table Type Message
{{ h.detected_at[:19] | replace('T', ' ') }} {{ h.severity }} {{ h.table }} {{ h.type }} {{ h.message }}
{% endif %}