{% extends "admin/base_site.html" %} {% block content %}

DAG {{ dag.id }} · team {{ dag.team.name }} ({{ dag.team_id }}) · DAG interval {{ dag.sync_frequency_interval|default:"—" }}

{% for tier in tiers %} {% empty %} {% endfor %}
TierScheduleDeclaredRan OKFailedRunningCancelledSuspendedBlockedNo job Non-materializingLast run
{{ tier.label }} {% if temporal_ui_host %} schedule ↗ {% else %}—{% endif %} {{ tier.declared }} {{ tier.ran }} {{ tier.counts.ok }} {{ tier.counts.failed }} {{ tier.counts.running }} {{ tier.counts.cancelled }} {{ tier.counts.suspended }} {{ tier.counts.blocked }} {{ tier.counts.missing }} {{ tier.counts.not_materializing }} {% if tier.parent_workflow_id %} {% if tier.run_is_legacy %}legacy {% endif %}{{ tier.started_at }} {% if temporal_ui_host %} {% endif %} {% else %}never ran{% endif %}
No node on this DAG declares a freshness target, so it has no tiers.
{% for tier in tiers %}

{{ tier.label }} — {{ tier.declared }} materializing node{{ tier.declared|pluralize }}

{% if tier.run_is_legacy %} This DAG has no schedule for this tier. The statuses below come from its pre-tier single DAG-wide schedule, {{ tier.parent_workflow_id }}, started {{ tier.started_at }} — so the nodes may well be materializing, just not on a per-tier schedule. {% elif tier.parent_workflow_id %} Last run {{ tier.parent_workflow_id }} started {{ tier.started_at }}. {% else %} This tier has never produced a job. Either its schedule does not exist or it has not fired yet. {% endif %}

{% for node in tier.nodes %} {% endfor %}
NodeTypeStatusDetailRun
{{ node.name }} {{ node.node_type }} {{ node.status }} {{ node.detail }} {% if node.workflow_id and temporal_ui_host %} workflow ↗ {% else %}—{% endif %}
{% endfor %} {% if untargeted %}

No declared target ({{ untargeted|length }})

These nodes belong to no tier, so no schedule fires them. Source tables are expected here; a matview or endpoint is not.

{% for node in untargeted %} {% endfor %}
NodeType
{{ node.name }}{{ node.type }}
{% endif %} {% endblock %}