← All use cases

Run by schedule name

DRE doesn’t fire schedules itself; cron, Airflow, Dagster or Databricks Jobs does. schedules.yml gives each schedule a name, the report (and Set) it runs, when it runs and its variables, and timings.yml names a timing once (“the 1st of the month, 06:00 Sydney”) for every client that shares it. The orchestrator’s only job is to call one command.

Recorded from a real run: a shared timing, the schedule that uses it, and the scheduled run.

Recorded from a real run: a shared timing, the schedule that uses it, and the scheduled run.

↓ Download the statement this run wrote (xlsx)

timings.yml
month_start_sydney:
  cron: "0 6 1 * *"
  timezone: Australia/Sydney
  except: ["2026-01-01"]       # no close on New Year's Day
schedules.yml
- name: close_client_a
  report: client_statement
  set: client_a
  timing: month_start_sydney
  vars: {period: last_month}
- name: close_client_b
  report: client_statement
  set: client_b
  timing: month_start_sydney
  vars: {period: last_month}
- name: formats_weekly
  select: "tag:formats"          # every report with the tag
  rrule: "FREQ=WEEKLY;BYDAY=MO;BYHOUR=5"
  vars: {period: last_week}
- name: flash_legacy
  report: sales_flash
  cron: "0 4 * * *"
  enabled: false                 # paused
terminal
# Which reports and Sets does a schedule run? (--output json is for tools)
dre ls --schedule close_client_a

# What the orchestrator runs. DRE_RUN_AT is the instant it was scheduled for,
# so a late run or a rerun renders the same SQL.
DRE_RUN_AT=2026-09-30T20:00:00Z dre run --schedule close_client_a