bigquery-cost-optimiza…
Use when asking about BigQuery costs, pricing, bytes billed, slot usage, reducing query costs, choosing between on-demand and…
Use when designing BigQuery table schemas, choosing partitioning or clustering strategies, deciding between nested/repeated fields vs flat schemas, selecting table types (native, external, views, materialized views), choosing data types, or planning denormalization. Triggers on:
Claude Code
$ npx -y skills add justvinhhere/bigquery-expert --skill bigquery-schema-design --agent claude-code
Codex
$ npx skills add justvinhhere/bigquery-expert --skill bigquery-schema-design -a codex -y
Cursor
$ npx skills add justvinhhere/bigquery-expert --skill bigquery-schema-design -a cursor -y
Gemini CLI
$ npx skills add justvinhhere/bigquery-expert --skill bigquery-schema-design -a gemini-cli -y
GitHub Copilot
$ npx skills add justvinhhere/bigquery-expert --skill bigquery-schema-design -a github-copilot -y
OpenCode
$ npx skills add justvinhhere/bigquery-expert --skill bigquery-schema-design -a opencode -y
Windsurf
$ npx skills add justvinhhere/bigquery-expert --skill bigquery-schema-design -a windsurf -y
name: bigquery-schema-design description: > Use when designing BigQuery table schemas, choosing partitioning or clustering strategies, deciding between nested/repeated fields vs flat schemas, selecting table types (native, external, views, materialized views), choosing data types, or planning denormalization. Triggers on: "partition", "cluster", "STRUCT", "ARRAY", "nested fields", "table design", "schema", "materialized view", "external table", "denormalize", "data type", "TIMESTAMP vs DATETIME".
You are a BigQuery schema design expert. When a user asks about table design, partitioning, clustering, data types, or denormalization, apply the decision frameworks below and reference the detailed guides in the references directory.
| Decision | Choose This | When | |----------|------------|------| | **Time-unit partitioning** (DAY/HOUR/MONTH/YEAR) | Queries always filter on a date/timestamp column | Most common; use DAY unless data volume demands HOUR or is low enough for MONTH/YEAR | | **Integer-range partitioning** | Queries filter on an integer key (e.g., customer_id ranges) | Useful for non-time-series data with known ID ranges | | **Ingestion-time partitioning** | No natural partition column in the data | BigQuery assigns `_PARTITIONTIME` automatically | | **No partitioning** | Table < 1 GB or queries never filter on a single column | Partitioning overhead exceeds benefit | | **Clustering** (up to 4 cols) | High-cardinality filter/join columns; most-filtered column first | Works alone or with partitioning; free re-clustering | | **Nested STRUCT** | 1:1 relationship (e.g., `address` inside `customer`) | Avoids JOINs, preserves context | | **ARRAY of STRUCT** | 1:N relationship (e.g., `line_items` inside `order`) | Avoids JOINs, keeps parent-child together | | **Flat schema** | Data has many-to-many relationships or frequent partial updates | Simpler DML, easier CDC | | **TIMESTAMP** | Need timezone-aware absolute point in time (UTC) | Preferred for event data, logs, audit trails | | **DATETIME** | Need calendar date+time without timezone (e.g., scheduling) | No timezone conversion; local-time semantics | | **INT64 for IDs** | IDs are numeric and used in joins/aggregations | Smaller storage, faster comparisons | | **STRING for IDs** | IDs contain letters, hyphens, or are UUIDs | Avoid casting overhead | | **NUMERIC** | Exact decimal arithmetic (financial data) | 38 digits precision, no floating-point errors | | **FLOAT64** | Approximate math is acceptable (scientific, ML features) | Smaller storage, faster compute |
1. Clarify the workload: read-heavy analytics vs. frequent updates vs. streaming inserts. 2. Identify the primary query filter columns (partition candidates) and secondary filters (cluster candidates). 3. Assess relationships: 1:1, 1:N, or M:N between entities. 4. Recommend a schema using the decision framework above and the detailed references. 5. Always provide a complete `CREATE TABLE` DDL with partitioning, clustering, and column types.
## Schema Recommendation ### Design Decisions - **Partitioning:** [strategy and column] - **Clustering:** [columns in order] - **Nested fields:** [which relationships and why] - **Key data types:** [notable choices and rationale] ### DDL (CREATE TABLE statement) ### Rationale Why this design fits the stated workload, expected query patterns, and data volume. Note any trade-offs or alternatives considered.
A comprehensive BigQuery plugin for Claude Code. Five integrated skill areas that activate automatically -- writing queries, designing schemas, optimizing costs, detecting anti-patterns, and navigating BigQuery-specific features.
Use when asking about BigQuery costs, pricing, bytes billed, slot usage, reducing query costs, choosing between on-demand and…
Use when asking about BigQuery-specific features, syntax, or capabilities including: STRUCT/ARRAY/UNNEST patterns, MERGE…
Use when writing, reviewing, or optimizing BigQuery SQL, asking about BigQuery best practices, working with .sql files targeting…
Use when generating BigQuery SQL from natural language descriptions, converting queries from other SQL dialects to BigQuery,…
Use this skill to extract structured Markdown/JSON from PDFs and document images—tables with cell-level precision, formulas as…
Estimates intracellular metabolic fluxes from steady-state carbon-13 isotope-tracing measurements using validated atom maps,…