Rebuild only what changed

Merenda models your data steps as a graph and runs only the steps whose inputs moved since last time.

A single binary reads step files, hashes their inputs, and skips anything unchanged.

A step

Steps are files, reviewed like the rest of your code.

step "daily" {
  in  = table("orders")
  out = table("orders_daily")
  run = "select day, count(*) from orders group by day"
}

Why it is quick

It keeps a hash of each input. On a run it compares hashes and skips unchanged steps, so a small change touches a small part of the graph.

Merenda, a self-hosted job runner.