New to Kestra?
Use blueprints to kickstart your first workflows.
Rebuild incremental Dataform models weekly with Kestra. A Sunday window runs dataform run with full refresh on BigQuery and reports to Discord.
Incremental models drift. Late-arriving rows miss their window, upstream backfills rewrite history the merge never sees, and a changed transformation only applies to rows processed after the change. The standard correction is a periodic full refresh, dataform run --full-refresh rebuilds incremental tables from scratch instead of appending to them, but it is the most expensive run a project has, which is exactly why it should happen in a controlled window rather than whenever someone remembers. This blueprint schedules it through io.kestra.plugin.dataform.cli.DataformCLI for early Sunday and reports to Discord.
sunday_window trigger (io.kestra.plugin.core.trigger.Schedule, disabled by default) fires at 03:00 on Sunday, a slot where a slot-hungry rebuild competes with no dashboards and no business-hours pipelines.full_refresh (io.kestra.plugin.dataform.cli.DataformCLI) loads the project from namespace files, installs the pinned @dataform/core dependency in beforeCommands, and runs dataform run --full-refresh with credentials from inputFiles and GOOGLE_APPLICATION_CREDENTIALS.notify posts the completed rebuild to Discord, and the errors block posts a distinct alert, early enough on Sunday that someone can intervene before Monday's consumers arrive.A full refresh run by hand happens at random times, from random machines, with no record beyond a terminal scrollback. In Kestra, the window is explicit in the cron expression, the run is an execution with logs and duration, failures alert Discord while there is still weekend left to react, and pausing the rebuild during a freeze is flipping disabled rather than remembering not to type a command.
GCP_SERVICE_ACCOUNT_JSON: the service account key JSON, delivered to the task as sa.json.DISCORD_WEBHOOK_URL: Discord incoming webhook URL.GCP_SERVICE_ACCOUNT_JSON and DISCORD_WEBHOOK_URL secrets to your Kestra namespace.disabled: false on the sunday_window trigger and adjust the cron to your window.--tags to the command, as shown in the tag-scoped run blueprint.