Naar inhoud
lightbulb Welkom op de nieuwe kennisbank | We hebben de docs volledig vernieuwd met meer dan 160 features. Bekijk wat nieuw isarrow_forward

BigQuery ML: machine learning met SQL

Train en gebruik machine learning-modellen direct in BigQuery met SQL: van lineaire regressie tot k-means clustering en tijdreeksvoorspellingen, zonder aparte ML-omgeving.

Wat is BigQuery ML?

BigQuery ML (BQML) is een set SQL-extensies waarmee je machine learning-modellen kunt trainen, evalueren en toepassen, volledig binnen BigQuery. Je schrijft SQL en BigQuery regelt de ML-infrastructuur eromheen.

Voordelen:

  • Geen Python, TensorFlow of aparte ML-services nodig
  • Je data verlaat BigQuery niet, wat helpt bij beveiliging en compliance
  • Directe integratie met je bestaande BigQuery-datasets
  • Resultaten zijn gewone BigQuery-tabellen, meteen bruikbaar in Looker Studio
warning

Let op de ML-prijsstelling

Het trainen van een model is duurder dan een gewone query. Ingebouwde modellen (lineaire en logistische regressie, k-means) worden afgerekend per verwerkte TiB trainingsdata, maar tegen een fors hoger tarief dan de standaard on-demand queryprijs. Voorspellingen met ML.PREDICT op die ingebouwde modellen rekenen meestal wel op het normale on-demand tarief. De exacte bedragen verschillen per modeltype en regio en veranderen regelmatig, dus controleer altijd de actuele BigQuery-prijspagina voor je een groot model traint.

Beschikbare modeltypen

BigQuery ML kent drie soorten modellen: ingebouwde modellen die volledig in BigQuery trainen, externe modellen die via Vertex AI trainen, en remote modellen die een Vertex AI-endpoint aanroepen (waaronder generatieve modellen zoals Gemini).

Modeltype Soort Gebruik
Linear regression Ingebouwd Numerieke voorspellingen (omzet, temperatuur)
Logistic regression Ingebouwd Classificatie (churn ja/nee, spam ja/nee)
K-means clustering Ingebouwd Groepering van klanten of producten
Matrix factorization Ingebouwd Aanbevelingssystemen
ARIMA_PLUS Ingebouwd Tijdreeksvoorspelling (forecasting)
Boosted trees (XGBoost) Extern (Vertex AI) Classificatie en regressie met hoge nauwkeurigheid
DNN, Wide and Deep Extern (Vertex AI) Deep learning voor complexe patronen
AutoML Extern (Vertex AI) Geautomatiseerde modelkeuze en tuning
Geïmporteerd (TensorFlow, ONNX, XGBoost) Geïmporteerd Bestaande modellen toepassen in BigQuery
Gemini en andere LLM's Remote Tekstgeneratie, samenvatten, classificeren met AI

Lineaire regressie: omzet voorspellen

Doel: voorspel de omzet van de volgende maand op basis van historische data.

Stap 1: Trainingsdata voorbereiden

CREATE OR REPLACE TABLE `project.ml_dataset.training_data` AS
SELECT
  EXTRACT(MONTH FROM order_date) AS maand,
  EXTRACT(YEAR FROM order_date) AS jaar,
  regio,
  product_categorie,
  SUM(omzet) AS totale_omzet
FROM `project.sales.orders`
WHERE order_date < '2025-01-01'
GROUP BY 1, 2, 3, 4

Stap 2: Model trainen

CREATE OR REPLACE MODEL `project.ml_dataset.omzet_model`
OPTIONS(
  model_type = 'linear_reg',
  input_label_cols = ['totale_omzet'],
  data_split_method = 'auto_split'
) AS
SELECT
  maand,
  jaar,
  regio,
  product_categorie,
  totale_omzet
FROM `project.ml_dataset.training_data`

Stap 3: Model evalueren

SELECT *
FROM ML.EVALUATE(MODEL `project.ml_dataset.omzet_model`)

Dit geeft statistieken zoals mean absolute error (MAE) en R-kwadraat.

Stap 4: Voorspellingen maken

SELECT *
FROM ML.PREDICT(
  MODEL `project.ml_dataset.omzet_model`,
  (
    SELECT
      maand,
      jaar,
      regio,
      product_categorie
    FROM `project.ml_dataset.toekomstige_periodes`
  )
)
lightbulb

Begin klein en valideer eerst

Train je eerste model op een kleine, schone subset en kijk naar de evaluatiestatistieken voor je het op de volledige dataset loslaat. Zo houd je de trainingskosten laag en zie je snel of de features voorspellende waarde hebben. Pas daarna schaal je op.

K-means clustering: klantsegmentatie

Groepeer klanten in segmenten op basis van koopgedrag:

CREATE OR REPLACE MODEL `project.ml_dataset.klant_segmenten`
OPTIONS(
  model_type = 'kmeans',
  num_clusters = 4
) AS
SELECT
  klant_id,
  SUM(omzet) AS totale_omzet,
  COUNT(*) AS aantal_orders,
  AVG(omzet) AS gemiddelde_orderwaarde,
  MAX(order_date) AS laatste_aankoop_datum
FROM `project.sales.orders`
GROUP BY klant_id

Bekijk de segmenten:

SELECT
  centroid_id AS segment,
  feature,
  numerical_value
FROM ML.CENTROIDS(MODEL `project.ml_dataset.klant_segmenten`)

Tijdreeksvoorspelling met ARIMA_PLUS

Voor omzetprognoses gebruikt BigQuery ML het ingebouwde modeltype arima_plus:

CREATE OR REPLACE MODEL `project.ml_dataset.omzet_forecast`
OPTIONS(
  model_type = 'arima_plus',
  time_series_timestamp_col = 'datum',
  time_series_data_col = 'omzet',
  horizon = 30,
  auto_arima = TRUE
) AS
SELECT
  DATE(order_date) AS datum,
  SUM(omzet) AS omzet
FROM `project.sales.orders`
GROUP BY datum

Daarna voorspellingen ophalen:

SELECT *
FROM ML.FORECAST(
  MODEL `project.ml_dataset.omzet_forecast`,
  STRUCT(30 AS horizon, 0.9 AS confidence_level)
)

Voorspellingen visualiseren in Looker Studio

Sla de uitkomst van ML.PREDICT of ML.FORECAST op in een BigQuery-tabel via een scheduled query die bijvoorbeeld dagelijks ververst. Koppel die tabel daarna als databron in Looker Studio.

Visualiseer de historische data en de forecast samen op een tijdreeksgrafiek door beide datasets te blenden op de datumkolom. Zo zien gebruikers de werkelijke cijfers en de prognose in één beeld.

Heb ik ML-kennis nodig om BigQuery ML te gebruiken?

Basiskennis van ML-concepten zoals trainen, evalueren en overfitting is nuttig. Je hoeft geen wiskundige formules te kennen, want de SQL-interface neemt veel complexiteit weg. De BigQuery ML-documentatie geeft een goede conceptuele introductie.

Hoe weet ik of mijn model goed genoeg is?

Gebruik ML.EVALUATE om statistieken zoals MAE, RMSE en R-kwadraat te bekijken. Voor classificatiemodellen kijk je naar precision, recall en AUC. Vergelijk de score altijd met een simpele baseline, bijvoorbeeld altijd het gemiddelde voorspellen.

Kan ik BigQuery ML-modellen in productie gebruiken?

Ja, je kunt ML.PREDICT direct in productiequeries gebruiken. Voor zeer hoge volumes, zoals miljoenen voorspellingen per dag, kun je Vertex AI overwegen omdat dat betere schaalbaarheid en aparte serving-opties biedt.

Hoeveel trainingsdata heb ik nodig?

Als vuistregel: minimaal duizend rijen voor eenvoudige modellen en tienduizend of meer rijen voor betere resultaten. BigQuery ML waarschuwt als de dataset te klein is voor betrouwbare uitkomsten.

Wat kost het om een model te trainen?

Training van ingebouwde modellen wordt afgerekend per verwerkte TiB, tegen een hoger tarief dan een gewone query. Voorspellingen met die modellen rekenen meestal op het standaard on-demand tarief. Externe modellen via Vertex AI hebben een eigen prijsstructuur. Controleer de actuele BigQuery-prijspagina voordat je grote modellen traint.

Kan ik Gemini of andere AI-modellen aanroepen vanuit SQL?

Ja. Via een remote model met CREATE MODEL kun je Gemini en andere ondersteunde LLM's aanroepen vanuit BigQuery, bijvoorbeeld om tekst te classificeren, samen te vatten of te genereren. Dit verloopt via een Vertex AI-verbinding.