Hoe BigQuery kosten berekent
BigQuery brengt kosten in rekening op twee manieren: voor het verwerken van queries en voor het opslaan van data.
On-demand (betalen per gebruik):
- Queries: ongeveer 6,25 dollar per TiB verwerkte data, met de eerste 1 TiB per maand gratis.
- Actieve opslag: ongeveer 0,02 dollar per GB per maand (data die binnen 90 dagen is gewijzigd).
- Langetermijn-opslag: ongeveer 0,01 dollar per GB per maand (data die 90 dagen ongewijzigd is). De eerste 10 GB opslag per maand is gratis.
Capacity-pricing via BigQuery Editions: Voor organisaties met hoge, voorspelbare query-volumes koop je verwerkingscapaciteit (slots) per maand of per jaar via een Edition (Standard, Enterprise of Enterprise Plus). Dit is goedkoper dan on-demand bij intensief gebruik. Het oude flat-rate-model is hierdoor vervangen; nieuwe afnames lopen via Editions met autoscaling of vaste slot-commitments.
On-demand is meestal genoeg
Voor de meeste Google Workspace-klanten is on-demand de juiste keuze. Capacity-pricing wordt pas voordelig bij grote, terugkerende query-volumes. Prijzen verschillen per regio en kunnen wijzigen; controleer altijd de actuele tarieven op de officiele BigQuery-prijspagina van Google Cloud.
Kostenbesparing: selecteer alleen benodigde kolommen
BigQuery berekent on-demand-kosten op basis van de kolommen die je selecteert, niet op het aantal resultaatrijen. Een SELECT * op een tabel van 100 GB verwerkt 100 GB, ook als je WHERE slechts 10 rijen teruggeeft.
Slecht (verwerkt alle kolommen):
SELECT * FROM `project.dataset.orders` WHERE datum = '2024-01-01'
Goed (verwerkt alleen de benodigde kolommen):
SELECT order_id, klant_id, omzet FROM `project.dataset.orders` WHERE datum = '2024-01-01'
Bij een tabel met 20 kolommen waarvan je er maar 3 nodig hebt, bespaar je grofweg 85 procent van de querykosten.
Partitionering: onmisbaar voor grote tabellen
Een gepartitioneerde tabel is opgesplitst in segmenten op basis van een datum- of integer-kolom. Als je filtert op de partitie-kolom, verwerkt BigQuery alleen die segmenten in plaats van de hele tabel.
Gepartitioneerde tabel aanmaken
- Ga naar de BigQuery-console in de Google Cloud Console.
- Selecteer een dataset en klik op Tabel aanmaken.
- Kies je databron.
- Scroll bij het schema-gedeelte naar Partitionering.
- Kies Partitioneren op veld en selecteer een
DATE- ofTIMESTAMP-kolom. - Optioneel: stel een partitie-vervaldatum in, bijvoorbeeld 365 dagen.
- Klik op Tabel aanmaken.
Een bestaande tabel partitioneer je door de data opnieuw te laden in een nieuwe gepartitioneerde tabel:
CREATE TABLE `project.dataset.orders_partitioned`
PARTITION BY DATE(order_date)
AS SELECT * FROM `project.dataset.orders`
Filter altijd op de partitiekolom
Met partitionering bespaar je alleen kosten als je daadwerkelijk filtert op de partitiekolom.
Geen besparing (verwerkt alle partities):
SELECT * FROM `project.dataset.orders_partitioned` WHERE klant_id = 123
Wel besparing (verwerkt alleen de partities van 2024):
SELECT * FROM `project.dataset.orders_partitioned`
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31'
Wikkel de partitiekolom niet in een functie
Als je een functie om de partitiekolom heen zet, bijvoorbeeld WHERE DATE(order_date) = ... terwijl de kolom al een DATE is, kan BigQuery de partities niet wegsnijden en verwerk je alsnog de hele tabel. Filter rechtstreeks op de kale partitiekolom.
Clustering voor extra besparing
Clustering organiseert data binnen een partitie op een of meer kolommen. Als je vaak filtert op dezelfde kolom, bijvoorbeeld regio of productcategorie, versnelt clustering de query en verlaagt het de kosten.
CREATE TABLE `project.dataset.orders_clustered`
PARTITION BY DATE(order_date)
CLUSTER BY regio, product_categorie
AS SELECT * FROM `project.dataset.orders`
Combineer partitionering en clustering voor de beste prestaties op grote tabellen.
Budget-alerts instellen
Stel budgetwaarschuwingen in zodat je een melding krijgt als je kosten een drempel naderen. Let op: een budget-alert waarschuwt alleen, het stopt geen queries.
Budget-alert aanmaken in de Cloud Console
- Ga naar
console.cloud.google.comen open Facturering. - Klik op Budgetten en meldingen.
- Klik op Budget aanmaken.
- Selecteer het project en kies eventueel BigQuery als dienst om alleen die kosten te volgen.
- Stel een maandelijks budget in, bijvoorbeeld 50 euro.
- Voeg drempelwaarschuwingen toe bij 50, 90 en 100 procent.
- Klik op Opslaan.
Query-quota en harde limieten instellen
Budget-alerts waarschuwen achteraf. Om kosten echt te begrenzen, stel je harde limieten in die queries blokkeren voordat ze te duur worden:
- Maximaal verwerkte bytes per query: stel in de query-instellingen een limiet op het aantal te verwerken bytes in. Queries die de limiet overschrijden, worden geweigerd voordat ze draaien en kosten dus niets.
- Quotum per gebruiker per dag: beperk via de quota-pagina hoeveel querydata een gebruiker of het hele project per dag mag verwerken.
- Kostenmonitoring: gebruik
INFORMATION_SCHEMA.JOBSom te zien wie de duurste queries draait.
Zonder limieten kan een query je budget opmaken
Zonder quota of byte-limieten kan een enkele slecht geschreven query enorme kosten veroorzaken. Stel voor productieomgevingen altijd een maximale byte-limiet per query in.
Opslagkosten verlagen
- Verwijder ongebruikte tabellen: controleer welke tabellen al 90 of meer dagen niet zijn geopend en ruim ze op.
- Laat langetermijn-opslag werken: data die 90 dagen ongewijzigd blijft, wordt automatisch goedkoper. Je hoeft hier niets voor te doen, maar onnodige updates op oude partities resetten de teller.
- Stel partitie-verval in: laat data ouder dan een x aantal dagen automatisch verwijderen.
- Gebruik externe tabellen: bewaar grote, zelden geraadpleegde historische datasets in Google Cloud Storage en koppel ze als externe BigQuery-tabel.
Maak per nacht een geaggregeerde tabel
Laat dashboards niet rechtstreeks op de ruwe data draaien. Gebruik een Scheduled Query om een keer per nacht een kleine geaggregeerde tabel bij te werken. Je betaalt dan eenmaal per dag voor de samenvoeging en alle rapporten lezen daarna de kleine tabel.
Ik zie onverwacht hoge kosten deze maand. Hoe vind ik de oorzaak?
Bevraag INFORMATION_SCHEMA.JOBS_BY_PROJECT voor een overzicht van alle queries met hun verwerkte bytes. Sorteer op total_bytes_billed aflopend en kijk welke gebruiker of welk dashboard de zwaarste queries draait. Voorbeeld: SELECT user_email, total_bytes_billed, query FROM region-eu.INFORMATION_SCHEMA.JOBS_BY_PROJECT ORDER BY total_bytes_billed DESC LIMIT 20.
Hoe schat ik vooraf in wat een query kost?
Zet in de BigQuery-console de query-validator aan. Voordat je een query uitvoert, toont BigQuery hoeveel data hij naar verwachting verwerkt. Vermenigvuldig dat met het tarief per TiB om de kosten te schatten. Een dry run via de API of de bq-tool geeft dezelfde schatting zonder de query echt te draaien.
Beinvloeden Looker Studio-rapporten ook de kosten?
Ja. Elk rapport dat BigQuery benadert, triggert een query die kosten genereert. Zet caching in Looker Studio aan om het aantal queries te beperken, en laat rapporten op een kleine geaggregeerde tabel draaien in plaats van op de ruwe data.
Kan ik gratis een voorbeeld van data bekijken?
Ja. Gebruik de Preview-tab in de BigQuery-console. Die is gratis en verbruikt geen queryquotum. Gebruik daarnaast LIMIT in je queries als je snel wilt controleren hoe data eruitziet.
Wat is de goedkoopste manier om dagelijks data samen te voegen?
Gebruik een Scheduled Query die per nacht een geaggregeerde tabel bijwerkt. Je betaalt dan eenmaal per dag voor de samenvoeging in plaats van bij elke dashboard-weergave opnieuw op de ruwe data te queryen.
Is het oude flat-rate-model nog beschikbaar?
Nee. Flat-rate is vervangen door BigQuery Editions met capacity-pricing. Je kiest een Edition en gebruikt autoscaling of vaste slot-commitments. Bestaande flat-rate-afnemers hebben een migratiepad gekregen, maar nieuwe afnames lopen via Editions.