Praktisk guide till att bygga en dataplattform på Google Cloud med BigQuery som kärna: arkitektur, datainmatning, kostnadskontroll och governance för svenska bolag som växer från kalkylark till självbetjänad analys.
Google Cloud och BigQuery har på några år gått från nischval till förstahandsval för svenska bolag som bygger sin första riktiga dataplattform. Anledningen är enkel: BigQuery kräver ingen klusterhantering, skalar från gigabyte till petabyte utan omkonfigurering, och prissätts per fråga snarare än per uppetid. Men en dataplattform är mer än ett lagringslager — det är en kedja av inmatning, transformation, styrning och presentation som måste hänga ihop redan från dag ett, annars slutar den som ett dyrt datasjö-experiment ingen litar på.
I den här guiden går vi igenom hur vi bygger dataplattformar på Google Cloud åt svenska kunder 2026: referensarkitektur, val mellan Dataflow och tredjepartsverktyg för inmatning, BigQuery-specifika optimeringar som partitionering och klustring, orkestrering med dbt och Cloud Composer, åtkomststyrning och de kostnadsfällor som annars får CFO:n att ifrågasätta hela investeringen efter år ett.
Referensarkitektur — tre lager från källa till beslut
De flesta av våra GCP-projekt landar i samma grundstruktur, ofta kallad medaljongarkitektur: ett rått lager (raw) som speglar källsystemen exakt utan transformation, ett stagninglager (staging) med typning, deduplicering och grundläggande städning, och ett presentationslager (marts) med affärslogik och nyckeltal redo för BI-verktyg. Vi lägger varje lager i ett eget BigQuery-dataset med separat IAM-behörighet — analytiker får läsbehörighet till marts, men aldrig skrivåtkomst till raw.
Cloud Storage fungerar som landningszon för filbaserade källor (CSV, Parquet, exporter från affärssystem) innan de laddas in i BigQuery, medan direktanslutna källor som Cloud SQL eller SaaS-API:er ofta går raka vägen in. Separata projekt eller åtminstone separata dataset per miljö (dev, stage, prod) är inte valfritt — vi har sett för många kunder blanda testdata och produktionsdata i samma dataset, vilket gör kostnadsuppföljning och åtkomststyrning omöjlig att reda ut i efterhand.
Datainmatning — batch, streaming och verktygsval
Valet av inmatningsverktyg avgör hur mycket ingenjörstid plattformen kräver löpande. För SaaS-källor som Salesforce, HubSpot, Stripe och Zendesk rekommenderar vi Fivetran eller Airbyte (self-hostat eller Airbyte Cloud) — färdiga anslutningar, hanterad schemaövervakning och inget eget underhåll av API-integrationer. Fivetran kostar mer per rad men kräver nästan ingen drift; Airbyte är billigare i drift men kräver att någon äger infrastrukturen.
För förändringsdatafångst från operativa databaser (Cloud SQL, on-prem Postgres, MySQL) använder vi Datastream, som strömmar ändringar till BigQuery nästan i realtid utan att belasta källdatabasen med tunga batch-frågor. För anpassad logik eller höga volymer — strömmande sensordata, clickstream, händelser i miljontals per timme — bygger vi egna pipelines med Dataflow och Pub/Sub. Tumregeln vi ger kunder: under cirka 50 anslutningar och utan behov av skräddarsydd transformationslogik i farten, välj ett hanterat EL-verktyg. Ovanför det, eller vid strömmande data i realtid, är investeringen i Dataflow motiverad.
BigQuery i grunden — partitionering, klustring och prismodell
BigQuerys on-demand-prissättning ligger kring 6,25 dollar per TiB skannad data (efter första TiB gratis per månad), vilket är förutsägbart för de flesta bolag som skannar under cirka 50 TiB per månad. Över den gränsen blir kapacitetsbaserad prissättning via BigQuery Editions — där du köper slots (beräkningskapacitet) snarare än betalar per fråga — ofta billigare. Vi räknar hem break-even åt kunder innan vi rekommenderar bytet; det är sällan en självklarhet.
Den enskilt största kostnadshävstången är dock partitionering och klustring. En tabell partitionerad på datumkolumn och klustrad på de kolumner som oftast filtreras (kund-id, region, produktkategori) kan sänka skannad datavolym — och därmed kostnad — med 80–95 procent för typiska analytiska frågor, jämfört med en oplitionerad tabell.
| 1 | CREATE TABLE analytics.marts.orders |
| 2 | PARTITION BY DATE(order_created_at) |
| 3 | CLUSTER BY customer_id, market |
| 4 | AS SELECT * FROM analytics.staging.orders; |
För dashboards som behöver svarstider under en sekund lägger vi ofta till BI Engine — ett in-memory-lager framför BigQuery som cachar de mest frekventa frågorna utan att du behöver bygga en separat serveringsdatabas.
Kostnadskontroll i praktiken
Den vanligaste anledningen till att en BigQuery-räkning skenar är inte prismodellen — det är frågor utan WHERE-villkor på partitionskolumnen som skannar hela tabellhistoriken varje gång ett dashboard laddas om. Vi sätter alltid upp Cloud Billing-budgetar med aviseringar på 50, 80 och 100 procent av förväntad månadskostnad, och taggar varje dataset med kostnadsattributions-labels per team så att en avdelning som skannar oproportionerligt mycket data syns direkt i fakturan, inte tre månader senare.
Ett konkret exempel: hos en handelskund gick den månatliga BigQuery-notan från cirka 340 000 kronor per år till under 90 000 kronor efter att vi partitionerade de tre största transaktionstabellerna, bytte fem tunga dashboard-frågor mot materialiserade vyer, och satte maxgränser för hur många TiB varje tjänstekonto får skanna per dag. Ingen ny hårdvara, ingen ny licens — bara arkitektur. Vi kör alltid en dry run (bq query --dry_run) i CI innan en ny dbt-modell eller ett nytt dashboard går till produktion, så att kostnadsöverraskningar fångas innan de når fakturan.
Orkestrering och transformation — dbt och Cloud Composer
dbt är standardvalet för transformationslagret i praktiskt taget alla BigQuery-plattformar vi bygger 2026. Modellerna skrivs i SQL, versionshanteras i Git, testas automatiskt (unika nycklar, null-kontroller, referensintegritet) och dokumenteras med automatisk lineage. För schemaläggning och att knyta ihop inmatning och transformation i samma pipeline använder vi Cloud Composer (hanterad Airflow) — det håller ordning på beroenden mellan Fivetran-synk, Datastream och dbt-körningar utan att någon behöver klicka runt manuellt.
| 1 | -- models/marts/customer_ltv.sql |
| 2 | select |
| 3 | customer_id, |
| 4 | sum(order_total) as lifetime_value, |
| 5 | count(distinct order_id) as order_count |
| 6 | from {{ ref('stg_orders') }} |
| 7 | group by 1 |
För mindre team utan dedikerad plattformsingenjör rekommenderar vi dbt Cloud istället för självhostad dbt Core på Composer — det sparar driftsansvar till priset av en licenskostnad som oftast är försvarbar redan vid två-tre aktiva utvecklare.
Åtkomststyrning och governance
IAM i BigQuery går ner till dataset-, tabell- och kolumnnivå. Vi sätter alltid upp rollbaserad åtkomst per lager snarare än per person, och lägger radnivåsäkerhet (row-level security policies) på tabeller som delas mellan avdelningar med olika behörighet — till exempel så att en säljregion bara ser sina egna kunder i samma tabell som resten av organisationen använder.
Dataplex fungerar som datakatalog och lineage-verktyg ovanpå plattformen, och Sensitive Data Protection (tidigare Cloud DLP) taggar och maskerar personuppgifter automatiskt vid inmatning. Värt att notera för svenska kunder: Google Cloud har ingen region i Sverige. Närmast EU-belägna region är europe-north1 (Finland) eller europe-west1 (Belgien) — vi väljer i praktiken alltid europe-north1 för nordiska kunder med krav på datalagring inom EU/EES.
BI-lager och självbetjäning
Looker Studio (gratis) räcker för enkla dashboards och interna rapporter, men saknar en governed semantic layer — varje användare kan definiera "intäkt" olika, vilket snabbt urholkar förtroendet för siffrorna. Looker med LookML löser det genom att centralisera mätetalsdefinitioner en gång och återanvända dem i alla dashboards. För organisationer som redan investerat i Microsofts ekosystem fungerar Power BI:s BigQuery-koppling bra, men med något högre latens än Lookers native-integration.
Vår rekommendation: starta med Looker Studio för snabb tid-till-värde, men planera för Looker eller ett motsvarande semantic layer-verktyg så snart fler än två-tre team börjar bygga egna dashboards ovanpå samma dataplattform — annars byggs inkonsekvens in i organisationen från start.
Google Cloud jämfört med Snowflake och Azure
Frågan vi får oftast innan projektet ens startar är om det ska vara Google Cloud överhuvudtaget. Snowflake har fördelen av att vara molnleverantörsoberoende och har historiskt haft ett enklare gränssnitt för multi-cloud-datadelning, men saknar BigQuerys inbyggda separation av lagring och beräkning på samma nivå — Snowflake-kluster (warehouses) måste dimensioneras och pausas manuellt för att undvika onödig körningstid. Azure Synapse eller Microsoft Fabric är ofta rätt val om resten av verksamheten redan är djupt investerad i Power BI, Entra ID och Azure-nätverk — då minskar friktionen i identitetshantering och nätverksintegration betydligt.
Vår tumregel: välj Google Cloud och BigQuery när ni vill ha lägst operativ overhead och betala strikt för det ni faktiskt frågar, välj Snowflake när ni behöver dela data mellan flera molnleverantörer eller externa parter, och välj Azure/Fabric när resten av IT-miljön redan är Microsoft-centrerad. Ingen av de tre är fel — men att byta i efterhand är ett halvårsprojekt, så avgör det tidigt tillsammans med hela IT-organisationen, inte bara dataplattformsteamet.
Slutsats
En dataplattform på BigQuery vinns inte av verktygsvalet i sig, utan av arkitekturbesluten som tas de första veckorna: lagerstruktur, partitioneringsstrategi och åtkomstmodell. Rätt uppsatt skalar den från startup till miljardomsättande bolag utan omskrivning. Fel uppsatt blir den en kostnadsöverraskning i nästa budgetrunda. Läs gärna vidare i vår praktiska guide till BigQuery-optimering eller jämför med ETL mot ELT för din dataplattform om ni fortfarande väljer inmatningsstrategi.
Vill du bygga eller migrera er dataplattform till Google Cloud? läs mer om våra tjänster eller boka ett samtal.
“En dataplattform på BigQuery vinns inte på dag ett med rätt verktyg — den vinns på partitioneringsstrategin och kostnadsdisciplinen som håller i sig efter år tre.”
- Simon Axelsson
Vanliga frågor
- Är BigQuery dyrare än Snowflake för en svensk dataplattform?
- Det beror på användningsmönstret snarare än listenlig prislista. BigQuerys on-demand-modell (betalning per skannad TiB) passar bolag med sporadisk eller oförutsägbar frågevolym bäst, medan Snowflakes warehouse-baserade prissättning kan bli dyrare om kluster lämnas igång i onödan men ger mer förutsägbar kostnad vid jämn, hög belastning. Vi rekommenderar att räkna på faktiskt frågemönster innan ni väljer — inte på listpriser.
- Behöver vi Cloud Composer eller räcker dbt Cloud?
- dbt Cloud räcker för de flesta team som enbart behöver schemalägga transformationer. Cloud Composer blir motiverat när ni behöver orkestrera hela kedjan — inmatning, väntan på källdata, transformation och nedströms notifieringar — i ett enda beroendeträd, särskilt om flera olika verktyg (Fivetran, Datastream, dbt) måste synkas i rätt ordning.
- Hur hanterar vi GDPR och datalagring i EU med BigQuery?
- Sätt datasetets region till en EU-region — för nordiska kunder oftast europe-north1 (Finland) — vid skapandet, eftersom regionen inte kan ändras i efterhand utan att data flyttas manuellt. Kombinera det med Sensitive Data Protection för att tagga och maskera personuppgifter, och dokumentera dataflödet i en registerförteckning enligt GDPR artikel 30.
- När blir kapacitetsbaserad prissättning (slots) mer lönsamt än on-demand?
- Som tumregel blir det värt att räkna på slots när organisationen konsekvent skannar mer än cirka 50 TiB per månad, eller när frågevolymen är så jämn att ni kan förutsäga kapacitetsbehovet. Under den nivån är on-demand oftast enklare att förvalta och billigare i praktiken.
- Kan vi ansluta Power BI till BigQuery?
- Ja, via Googles officiella BigQuery-connector i Power BI. Anslutningen fungerar bra för de flesta rapporteringsbehov, men har något högre frågelatens än en native BigQuery-klient som Looker Studio eller Looker — vilket märks mest i interaktiva dashboards med många filter.
