bigquery
Instructions for querying Google BigQuery using the bq command-line tool. Useful for running SQL queries, exploring datasets, and exporting results.
When & Why to Use This Skill
This Claude skill enables seamless interaction with Google BigQuery via the bq command-line tool. It empowers users to explore large-scale datasets, execute complex standard SQL queries, and manage data results directly within the AI interface, bridging the gap between natural language and big data analytics.
Use Cases
- Dataset Exploration: Quickly list projects, datasets, and tables, and retrieve detailed schemas to understand data structures without leaving the chat.
- Data Analysis & Querying: Execute standard SQL queries to extract insights, perform aggregations, and preview data using formatted outputs.
- Cost & Performance Optimization: Perform dry runs to estimate query costs and use best-practice configurations like LIMIT clauses to ensure efficient resource usage.
- Data Export & Workflow Integration: Export query results to CSV for external reporting or save processed data into new destination tables for further experimentation.
| name | bigquery |
|---|---|
| description | Instructions for querying Google BigQuery using the bq command-line tool. Useful for running SQL queries, exploring datasets, and exporting results. |
BigQuery Skill
This skill enables you to query Google BigQuery using the bq command-line tool.
Authentication is already configured. The default project is project_id.
Use the project_id_exploration dataset as scratch space for temporary tables and experimentation.
The public dataset contains tables synced from the production Postgres database.
1. Explore Available Datasets
List datasets in the current project (defaults to project_id):
bq ls
List datasets in a specific project:
bq ls --project_id=PROJECT_ID
List tables in a dataset:
bq ls PROJECT_ID:DATASET_NAME
Get table schema:
bq show --schema --format=prettyjson PROJECT_ID:DATASET_NAME.TABLE_NAME
2. Run Queries
Run a simple query:
bq query --use_legacy_sql=false 'SELECT * FROM `project.dataset.table` LIMIT 10'
Run a query with formatted output:
bq query --use_legacy_sql=false --format=prettyjson 'YOUR_QUERY'
Run a query and save to a destination table:
bq query --use_legacy_sql=false --destination_table=PROJECT:DATASET.NEW_TABLE 'YOUR_QUERY'
Run a dry run to estimate costs:
bq query --use_legacy_sql=false --dry_run 'YOUR_QUERY'
3. Export Results
Export to CSV:
bq query --use_legacy_sql=false --format=csv 'YOUR_QUERY' > results.csv
4. Best Practices
- Always use
--use_legacy_sql=falsefor standard SQL syntax - Use
LIMITclauses when exploring data to reduce costs - Use
--dry_runto estimate query costs before running expensive queries - Use backticks around table references:
`project.dataset.table`
5. Common Patterns
Preview table data:
bq head -n 10 PROJECT:DATASET.TABLE
Get table info (row count, size):
bq show --format=prettyjson PROJECT:DATASET.TABLE
Query with parameters:
bq query --use_legacy_sql=false --parameter='name:STRING:value' 'SELECT * FROM `table` WHERE col = @name'