ENGINEERING

Pull-request BigQuery cost guardrail with dry-run plan diff

On every PR that touches SQL or dbt models, dry-runs the changed queries against BigQuery, compares estimated bytes and the plan to the version on the base branch.

CategoryEngineering
Enginesim
Difficultyadvanced
Triggerevent
Steps5
Setup~25 min

How it runs

The automated pipeline, trigger to output.

  • TriggerPR opened/updated touching SQL filesGitHubGitHub
  • ActionDry-run changed queries on head and baseGoogle BigQueryBigQuery
  • LogicCompute cost/plan delta vs threshold
  • ActionPost PR comment with plan diff and deltaGitHubGitHub
  • OutputSet passing/failing cost-guardrail checkGitHubGitHub

What it does

This catches slow-query regressions before they ever merge. When a PR changes SQL, the workflow dry-runs both the new and the base-branch versions, diffs the estimated bytes processed and the query plan, and comments on the PR with the delta. If a change crosses the cost threshold it posts a failing check so the regression is caught in review, not in production billing.

When to use it

Use on repos where dbt models or analytics SQL ship through pull requests and you want a cost gate equivalent to a test suite. Best for teams that have been burned by a merged query quietly multiplying scan volume.

How it works

  1. 1A GitHub pull-request event triggers when SQL files change.
  2. 2Changed queries are dry-run against BigQuery to get estimated bytes and the plan, for both head and base.
  3. 3A logic step computes the cost and plan delta and decides pass or fail against the threshold.
  4. 4The delta and plan diff are posted as a PR comment.
  5. 5A status check is set so an over-threshold regression blocks the merge.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect GitHubRepos, issues, pull requests, actions.
  2. 2
    Connect BigQueryDatasets, queries, schemas.
  3. 3
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  4. 4
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  5. 5
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.