dq-doctor Report: {{ report.table_name }}

{{ report.db_path }} · Generated at {{ report.generated_at }}

Rows
{{ report.row_count }}
Columns
{{ report.column_count }}
Total Rules
{{ report.total_rules }}
Passed
{{ report.passed_rules }}
Failed
{{ report.failed_rules }}
Suggested
{{ report.suggested_rules }}

Column Profile

{% for col in report.profile.columns %} {% endfor %}
Column Type Null Rate Distinct Rate Min Max Semantic
{{ col.name }} {{ col.dtype }} {{ "%.2f%%" | format(col.null_rate * 100) }} {{ "%.2f%%" | format(col.distinct_rate * 100) }} {{ col.min_value if col.min_value is not none else "-" }} {{ col.max_value if col.max_value is not none else "-" }} {{ col.inferred_semantic_type }}

Rule Suggestions

{% for rule in report.rules %} {% endfor %}
Rule Type Column Confidence Severity Reason
{{ rule.rule_type }} {{ rule.column }} {{ "%.0f%%" | format(rule.confidence * 100) }} {{ rule.severity }} {{ rule.reason }}

Validation Results

{% for result in report.results %} {% endfor %}
Status Rule Type Column Source Failed / Total Message
{% if result.total_count == 0 and result.passed %} SUGGEST {% elif result.passed %} PASS {% else %} FAIL {% endif %} {{ result.rule_type }} {{ result.column }} {% set rule = report.rules | selectattr('rule_id', 'equalto', result.rule_id) | first %} {% if rule and rule.source == 'llm' %} LLM {% else %} heuristic {% endif %} {{ result.failed_count }} / {{ result.total_count }} {{ result.message }}
{% set llm_rules = report.rules | selectattr('source', 'equalto', 'llm') | list %} {% if llm_rules %}

LLM Insights

{% for rule in llm_rules %} {% endfor %}
Rule Type Column Confidence Severity Insight
{{ rule.rule_type }} {{ rule.column }} {{ "%.0f%%" | format(rule.confidence * 100) }} {{ rule.severity }} {{ rule.reason }}
{% endif %}