DATA OPS
Attribute BigQuery Spend to Teams via Airtable Owner Map
Joins daily BigQuery query spend against an Airtable directory mapping users to teams, writes a per-team daily cost rollup back to Airtable.
How it runs
The automated pipeline, trigger to output.
- TriggerDaily schedule
- ActionSum yesterday's spend per user in BigQueryBigQuery
- ActionRead user-to-team mapping from AirtableAirtable
- LogicJoin spend to teams, roll up, flag unmapped users
- ActionWrite per-team dated cost rows to AirtableAirtable
- OutputPost ranked team cost leaderboard to SlackSlack
What it does
Individual `user_email` values from BigQuery rarely map cleanly to org structure. This workflow joins raw spend against an Airtable table that maps each user (and service account) to a team and cost center, then rolls spend up to the team level. It stores a dated row per team in Airtable for trending and posts a ranked daily leaderboard to Slack.
When to use it
Use it when leadership wants warehouse cost reported by team or cost center rather than by individual, and when your user-to-team mapping lives in Airtable and changes often. The Airtable map stays the single source of truth — no hardcoded ownership in the pipeline.
How it works
- 1A daily schedule triggers the run.
- 2BigQuery sums yesterday's billed bytes and slot-ms grouped by `user_email`.
- 3Airtable returns the user-to-team mapping table.
- 4A logic step joins spend to teams, sums per team, and flags any user with no mapping as "Unattributed."
- 5Per-team dated cost rows are written back to Airtable.
- 6A ranked team leaderboard, including the unattributed bucket, is posted to a Slack channel.
Set it up
What you configure once, before turning it on.
- 1Connect BigQueryDatasets, queries, schemas.
- 2Connect AirtableBases, tables, views, automations.
- 3Connect SlackChannels, DMs, threads, mentions.
- 4Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
- 5Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
- 6Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.
More Data Ops workflows
BigQuery Per-Team Budget Breach Alert to PagerDuty
Tracks month-to-date BigQuery scheduled-query spend per team and, when a team crosses its monthly budget, pages the team's on-call in PagerDuty and snapshots the spend breakdown…
dbt orphan model detector with Linear cleanup tickets
Scans your dbt manifest for models that no other model, exposure, or BI tool consumes.
Weekly BigQuery Cost Trend Sheet and Exec Digest
Compiles week-over-week BigQuery scheduled-query cost by owner and dataset into a Google Sheet with trend columns.
Backfill Missing Owner Labels on BigQuery Scheduled Queries
Finds scheduled queries with no owner label, infers the likely owner from creator metadata and target-table lineage, proposes a label.
Daily BigQuery Scheduled-Query Cost Attribution to Owners
Each morning, totals the prior day's on-demand bytes-billed per scheduled query, maps each query to its owner from a label, and posts a per-owner cost leaderboard to Slack.
dbt source freshness watcher with severity-routed alerts
Checks Snowflake loaded-at timestamps against each dbt source's freshness SLA, then routes warnings to Slack and hard breaches to a PagerDuty incident so stale data never…
Run it inside a business
This workflow drops into a full company template. Import the org, and this is one of the playbooks its agents run.

Run this workflow in your colony.
14-day trial. No DevOps. No Sales call. Provisioned in under a minute.
