DATA OPS

Open GitHub Issues for New Expensive BigQuery Queries

Daily, detects newly appeared high-cost BigQuery query patterns, traces each to its owner, and opens a labeled GitHub issue assigned to that owner asking for optimization.

CategoryData Ops
Enginesim
Difficultyadvanced
Triggerschedule
Steps5
Setup~25 min

How it runs

The automated pipeline, trigger to output.

  • TriggerDaily schedule
  • ActionAggregate spend by query fingerprint and owner with 14-day baselineGoogle BigQueryBigQuery
  • LogicKeep newly expensive fingerprints (high yesterday, low baseline)
  • ActionOpen labeled GitHub issue per offender, assigned to ownerGitHubGitHub
  • OutputPost summary of opened issues to SlackSlack

What it does

It fingerprints query shapes (normalized SQL text) and flags patterns that newly crossed a cost threshold yesterday but weren't expensive before. For each new offender it identifies the owner, then files a GitHub issue assigned to them with the query, billed bytes, estimated cost, and an `expensive-query` label so optimization becomes tracked engineering work, not a one-off Slack ping that gets lost.

When to use it

Use it when expensive queries should be fixed at the source and tracked to completion. Issues create a durable backlog, tie cost regressions to the people who can fix them, and let you measure how many got resolved.

How it works

  1. 1A daily schedule triggers the run.
  2. 2BigQuery aggregates yesterday's spend by normalized query fingerprint and owner, plus the prior 14-day baseline per fingerprint.
  3. 3A logic step keeps only fingerprints over the cost threshold that had near-zero baseline spend (newly expensive).
  4. 4For each new offender, a GitHub issue is created, assigned to the mapped owner, labeled, and populated with the query and cost details.
  5. 5A summary of issues opened is posted to a Slack channel.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect BigQueryDatasets, queries, schemas.
  2. 2
    Connect GitHubRepos, issues, pull requests, actions.
  3. 3
    Connect SlackChannels, DMs, threads, mentions.
  4. 4
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  5. 5
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  6. 6
    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.