Stats
Actions
Tags
From data-engineering
Audits BigQuery spend, query failures, and scan inefficiencies to identify cost drivers and prepare optimization recommendations.
How this skill is triggered — by the user, by Claude, or both
Slash command
/data-engineering:bigquery-cost-auditThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- Reviewing BigQuery query costs, failure patterns, or performance inefficiencies.
-- Top 20 most expensive jobs in the past 7 days
SELECT
job_id, user_email, query,
total_bytes_processed / POW(1024, 4) AS tb_processed,
ROUND(total_bytes_processed / POW(1024, 4) * 6.25, 2) AS estimated_cost_usd,
creation_time
FROM `region-us`.INFORMATION_SCHEMA.JOBS
WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND job_type = 'QUERY'
AND state = 'DONE'
ORDER BY total_bytes_processed DESC
LIMIT 20;
SELECT
error_result.reason, COUNT(*) AS failure_count, user_email,
ANY_VALUE(query) AS sample_query
FROM `region-us`.INFORMATION_SCHEMA.JOBS
WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND error_result IS NOT NULL
GROUP BY error_result.reason, user_email
ORDER BY failure_count DESC;
Look for queries that scan full tables despite available partition columns:
WHERE filter on the partition column._PARTITIONTIME or _PARTITIONDATE not in the filter.LIMIT used without a partition filter (does not reduce scan cost).Check high-scan queries that filter on non-clustered columns after partitioning is already in place.
-- Find scheduled queries with high scan volume (via Data Transfer Service run history)
-- Note: scheduled query metadata lives in region-specific transfer_run tables.
-- Substitute your project and region:
SELECT
config.display_name,
run.state,
run.end_time,
run.error_status
FROM `<project>.<region>.INFORMATION_SCHEMA.SCHEDULED_QUERY_RUNS` AS run
JOIN `<project>.<region>.INFORMATION_SCHEMA.SCHEDULED_QUERIES` AS config
ON run.scheduled_query_id = config.scheduled_query_id
WHERE run.end_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
ORDER BY config.display_name, run.end_time DESC;
-- Then cross-reference with JOBS to find per-run bytes_processed.
npx claudepluginhub yeaight7/agent-powerups --plugin data-engineeringCreates, edits, and verifies skills using a test-driven development approach with pressure scenarios and subagents.