Generated banner for Bigquery AI ML
Generated logo for Bigquery AI ML

Bigquery AI ML

GoogleOfficialPublished by Google

  • Skill
  • Tool integration
  • Data and AI
  • Apache-2.0
  • No issues found

From the author

Leverages BigQuery's built-in machine learning and GenAI capabilities for advanced data analytics. Use when you need to write SQL queries that perform time-series forecasting, predict values, detect outliers or anomalies, find key drivers, perform semantic search or vector search, classify text, calculate similarity, summarize content, translate language, evaluate models, filter by semantic conditions, measure the causal effect of an intervention, compute correlations between columns, generate descriptive statistics and table distribution profiles, detect change points or structural breaks, extract trend or seasonality components, or leverage generative AI capabilities in BigQuery. Do not use for general BigQuery dataset, table, or job management requests.
— the description by Google

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The BigQuery AI & ML skill provides a comprehensive interface for executing advanced data analytics, machine learning, and generative AI tasks directly inside BigQuery using SQL. It enables users to perform complex operations like time-series forecasting, anomaly detection, semantic search, and LLM-based content generation without needing to export data to external environments. The skill covers a wide range of built-in functions, including zero-shot models for forecasting and classification, as well as tools for statistical analysis and causal inference.

What it does

  • Performs zero-shot time-series forecasting and anomaly detection.
  • Executes LLM-based text summarization, classification, and semantic scoring.
  • Conducts causal effect analysis on time-series data.
  • Generates descriptive statistics and correlation matrices for datasets.
  • Enables semantic and vector search capabilities within SQL.
  • Extracts trends and seasonality components from historical data.

When to use it

  • When you need to perform ML or GenAI tasks directly on data stored in BigQuery.
  • When you want to avoid moving data out of BigQuery for analysis or model inference.
  • When you need to analyze time-series data for shifts, trends, or causal impacts.
  • When you need to perform semantic operations like summarization or classification at scale.
  • When you need to identify key drivers behind metric changes in your data.

Advantages

  • Seamless integration with existing BigQuery SQL workflows.
  • Eliminates the need for complex data pipelines to external ML services.
  • Supports zero-shot learning for rapid insights without custom model training.
  • Scalable processing for large datasets directly within the database engine.
  • Unified syntax for both traditional statistical analysis and modern generative AI.

Usage examples

“How can I forecast future values for my sales data in BigQuery?”
The agent will guide you to use the AI.FORECAST function, explaining how to specify your data column, timestamp column, and the required forecast horizon.
“Summarize the sentiment of my customer reviews stored in a BigQuery table.”
The agent will demonstrate how to use the AI.AGG function with a natural language instruction to synthesize sentiment across grouped rows.
“Detect anomalies in my server log time-series data.”
The agent will provide a query using AI.DETECT_ANOMALIES to identify isolated point anomalies in your time-series data.
“Find the key drivers for a drop in website traffic.”
The agent will show you how to use the AI.KEY_DRIVERS function to attribute metric changes to specific dimensional segments.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/google/bigquery-ai-ml/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip bigquery-ai-ml.zip -d .agents/skills

Documentation by Google

BigQuery AI & ML

BigQuery integrates with Vertex AI to provide powerful machine learning and generative AI capabilities directly within SQL queries using built-in functions like AI.FORECAST, AI.KEY_DRIVERS, AI.DETECT_ANOMALIES, and AI.GENERATE.

Attribution

MUST READ: Before executing any gcloud, REST API, or MCP command, you MUST read Usage Attribution. For commands executed directly in the terminal (never in generated scripts, Terraform, or user code), prefix gcloud with CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:bigquery-ai-ml)" and append agent-skills/1.0 (skill:bigquery-ai-ml) to User-Agent headers.

Function Selection & Reference Directory

FunctionReferenceSQL ShapeRequires CREATE MODEL or CREATE VECTOR INDEX?When to Use & Disambiguation
AI.AGGai_agg.mdAggregateNoMulti-row semantic aggregation with GROUP BY; synthesizes one summary string across many rows (unlike per-row AI.GENERATE).
AI.CAUSAL_EFFECTai_causal_effect.mdTVFNoQuantifies counterfactual post-intervention impact on a time series after a specific treatment timestamp.
AI.CLASSIFYai_classify.mdScalarNoSemantic classification of text or multimodal unstructured data into predefined category labels.
AI.DETECT_ANOMALIESai_detect_anomalies.mdTVFNoZero-shot TimesFM detector for isolated time-series point anomalies/outliers (use ML.DETECT_CHANGE_POINTS for sustained shifts).
AI.EVALUATEai_evaluate.mdTVFNoZero-shot TimesFM time-series forecast evaluation/backtesting against a historical holdout split.
AI.FORECASTai_forecast.mdTVFNoZero-shot TimesFM time-series forecasting without training a custom model.
AI.GENERATEai_generate.mdScalarNoDefault for per-row LLM text or multimodal structured extraction (output_schema); returns STRUCT. Prefer over AI.GENERATE_TABLE.
AI.GENERATE_EMBEDDINGai_generate_embedding.mdTVFYesBatch generates ARRAY<FLOAT64> vector embeddings for text or visual content using a remote embedding model.
AI.GENERATE_TABLEai_generate_table.mdTVFYesTable-valued structured extraction (FROM clause); only use instead of AI.GENERATE when a remote model + TVF is explicitly needed.
AI.IFai_if.mdScalarNoEvaluates boolean semantic conditions (BOOL) on text or multimodal data for WHERE/CASE/JOIN filtering (do not use AI.GENERATE_TABLE).
AI.KEY_DRIVERSai_key_drivers.mdTVFNoDefault one-step attribution of dimensional segments driving metric changes (interest_label_col TRUE vs. FALSE). Prefer over CONTRIBUTION_ANALYSIS.
AI.PREDICTai_predict.mdTVFNoZero-shot TabFM foundation model for tabular classification or regression without training and managing custom models.
AI.SCOREai_score.mdScalarNoAssigns a continuous FLOAT64 semantic score to text or multimodal data for ranking or sorting (ORDER BY).
AI.SEARCHai_search.mdTVFNoSimplified semantic search using a raw string query on tables with autonomous background embeddings (AI.EMBED generated column).
AI.SIMILARITYai_similarity.mdScalarNoComputes an on-the-fly semantic similarity score (FLOAT64) between two text or multimodal inputs without stored embeddings.
Remote Modelsremote_models.mdCREATE MODELYesCreates a Vertex AI REMOTE WITH CONNECTION DEFAULT model entity for functions that require one (AI.GENERATE_TABLE, AI.GENERATE_EMBEDDING, VECTOR_SEARCH).
CONTRIBUTION_ANALYSISml_contribution_analysis.mdCREATE MODELYesModel-based driver analysis (CREATE MODEL ... OPTIONS(MODEL_TYPE='CONTRIBUTION_ANALYSIS') + ML.GET_INSIGHTS). Use AI.KEY_DRIVERS unless a MODEL entity is required.
ML.CORRELATIONml_correlation.mdTVFNoCalculates statistical correlation coefficients between numeric columns, optionally sliced by dimensions.
ML.DESCRIBE_DATAml_describe_data.mdTVFNoGenerates descriptive statistics (e.g., count, mean, median, min, max, stddev, quantiles, nulls, top values) for columns in a table or subquery.
ML.DETECT_CHANGE_POINTSml_detect_change_points.mdTVFNoDetects structural breaks or sustained shifts ([begin_timestamp, end_timestamp] intervals) in a time series.
ML.SEASONALITYml_seasonality.mdTVFNoExtracts recurring periodic/seasonal components from a historical time series.
ML.TRENDml_trend.mdTVFNoExtracts the smoothed long-term trend component from a historical time series.
VECTOR_SEARCHvector_search.mdTVFYesSearches pre-computed ARRAY<FLOAT64> embedding columns between a base table and query table (paired with AI.GENERATE_EMBEDDING, unlike AI.SEARCH).
  • BigQuery Basics Skill: SKILL.md file for core BigQuery concepts, resource management, CLI, and client libraries.

Files

references/ai_predict.md

BigQuery AI.Predict

AI.PREDICT leverages the pre-trained TabFM foundation model to perform prediction (classification or regression) tasks on tabular data without the need to train and manage custom models. Under the hood, this function applies an In-Context Learning (ICL) approach: it embeds the training data to construct a temporary model representation (kv cache) and uses it to predict labels for the prediction data within the lifetime of a single query execution.

Syntax Reference

SELECT
  *
FROM
  AI.PREDICT(
    { TABLE `project.dataset.training_table` | (TRAINING_QUERY) },
    { TABLE `project.dataset.prediction_table` | (PREDICTION_QUERY) }
    [, label_col => 'LABEL_COL']
    [, model => 'MODEL']
  )
Input Arguments
ArgumentRequirementTypeDescription
training_tableRequiredRelationThe source table
: : : : or subquery :
: : : : containing :
: : : : training data. :
: : : : This data MUST :
: : : : contain the label :
: : : : column. Only :
: : : : Numerical (e.g., :
: : : : INT64, FLOAT64), :
: : : : STRING, and BOOL :
: : : : columns are :
: : : : supported. :
prediction_tableRequiredRelationThe source table
: : : : or subquery :
: : : : containing :
: : : : prediction data. :
: : : : Every column in :
: : : : the :
: : : : training_table :
: : : : (except the :
: : : : label_col) MUST :
: : : : exist in the :
: : : : prediction_table :
: : : : with the exact :
: : : : same :
: : : : case-insensitive :
: : : : name and matching :
: : : : types. Only :
: : : : Numerical (e.g., :
: : : : INT64, FLOAT64), :
: : : : STRING, and BOOL :
: : : : columns are :
: : : : supported. :
label_colOptionalStringThe name of the
: : : : label column in :
: : : : the training data. :
: : : : Defaults to :
: : : : 'label'. :
modelOptionalStringThe model version.
: : : : If specified, the :
: : : : value MUST be the :
: : : : literal `'TabFM :
: : : : 1.0'`. Defaults to :
: : : : 'TabFM 1.0'. :
Constraints & Limitations

[!WARNING] Same Table Split (Avoid Label Leakage): If you use the EXACT same table (or query) for both the training_table and prediction_table arguments, you MUST split the data into non-overlapping sets to avoid label leakage. You can use a helper column with RAND() <= 0.8 to split the data (e.g., 80% for training, 20% for prediction).

Example:

WITH prepared_data AS (
  SELECT *, RAND() <= 0.8 AS training
  FROM `bigquery-public-data.ml_datasets.penguins`
  WHERE body_mass_g > 0
)
SELECT
  *
FROM
  AI.PREDICT(
    # Training data
    (SELECT * EXCEPT(training) FROM prepared_data WHERE training),
    # Prediction data
    (SELECT * EXCEPT(training) FROM prepared_data WHERE NOT training),
    label_col => 'body_mass_g'
  );
  • Feature Column Limit: The training and prediction data can include up to 50 feature columns.

  • Classification Category Limit: For classification tasks, you can classify data into at most 10 different categories.

  • Task Type Detection:

    • CLASSIFICATION: Automatically triggered if the label column is of type STRING or BOOL.

    • REGRESSION: Automatically triggered if the label column is of a Numerical type.

Output Schema

The output schema includes:

ColumnTypeDescription
predicted_<label_col>STRING or BOOL (Classification) or Numeric (Regression)The predicted label. The data type is the same as the label column in the training data.
predicted_<label_col>_probsARRAY<STRUCT<label STRING, prob FLOAT64>>(Classification only) An array of structs containing label (STRING) and prob (FLOAT64) representing the probability of each class.
All columns from prediction_table(As Input)All columns from the input prediction_table relation.

Examples

Classification Example (Inline Data)
SELECT *
FROM
  AI.PREDICT(
    (
      SELECT
        'Alice' AS customer,
        150.0 AS spend,
        2 AS calls,
        24 AS tenure,
        TRUE AS churned
      UNION ALL
      SELECT
        'Bob' AS customer,
        850.0 AS spend,
        1 AS calls,
        48 AS tenure,
        FALSE AS churned
    ),
    (
      SELECT
        'Bob' AS customer,
        850.0 AS spend,
        1 AS calls,
        48 AS tenure
      UNION ALL
      SELECT
        'Charlie' AS customer,
        200.0 AS spend,
        4 AS calls,
        12 AS tenure
    ),
    label_col => 'churned'
  );
Classification Example (Tables)
SELECT *
FROM
  AI.PREDICT(
    TABLE `my_project.my_dataset.customer_train`,
    TABLE `my_project.my_dataset.customer_test`,
    label_col => 'churned'
  );
Regression Example (Tables)
SELECT *
FROM
  AI.PREDICT(
    TABLE `my_project.my_dataset.housing_train`,
    TABLE `my_project.my_dataset.housing_test`,
    label_col => 'price'
  );
Same Table Split Example (Regression)

If you must use the same table for both training and prediction, you MUST split the data to avoid label leakage. This example predicts the numeric body_mass_g column (Regression).

WITH prepared_data AS (
  SELECT *, RAND() <= 0.8 AS training
  FROM `bigquery-public-data.ml_datasets.penguins`
  WHERE body_mass_g > 0
)
SELECT
  *
FROM
  AI.PREDICT(
    # Training data
    (SELECT * EXCEPT(training) FROM prepared_data WHERE training),
    # Prediction data
    (SELECT * EXCEPT(training) FROM prepared_data WHERE NOT training),
    label_col => 'body_mass_g'
  );
Same Table Split Example (Classification)

If you must use the same table for both training and prediction, you MUST split the data to avoid label leakage. This example predicts the string species column (Classification).

WITH prepared_data AS (
  SELECT *, RAND() <= 0.8 AS training
  FROM `bigquery-public-data.ml_datasets.penguins`
  WHERE species IS NOT NULL
)
SELECT
  *
FROM
  AI.PREDICT(
    # Training data
    (SELECT * EXCEPT(training) FROM prepared_data WHERE training),
    # Prediction data
    (SELECT * EXCEPT(species, training) FROM prepared_data WHERE NOT training),
    label_col => 'species'
  );

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Google
Publisher
Google (Official)
Source
google/skills · skills/cloud/bigquery-ai-ml · commit 2194d3b
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Google or Google.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download bigquery-ai-ml.zip