Før du kan køre dine modeller, skal du sikre dig, at dbt er korrekt forbundet til Snowflake. Dette kræver, at du har en korrekt dbt-profil. Specifikt skal du sørge for at eksportere variablen SNOWFLAKE_ACCOUNT. I vores eksempel brugte vi ah459331.east-us-2.azure. Du kan teste forbindelsen til Snowflake ved at køre kommandoen dbt debug; hvis alt er konfigureret korrekt, bør du få beskeden “All checks passed!” Dette betyder, at du er klar til at begynde udviklingen af dbt-modellerne.

En af fordelene ved dbt er dets lokale udviklingsmiljø. Dette giver dig mulighed for at adskille produktions- og udviklingsmiljøer, hvilket gør det muligt at teste og bygge modeller i udviklingsskemaet uden risiko for at bryde produktionen. Miljøerne konfigureres i profiles.yml. Når forbindelsen er testet, kan du køre kommandoen dbt deps for at installere alle dbt-pakker fra packages.yml. Der er mange nyttige pakker tilgængelige på dbt hubben (https://hub.getdbt.com).

Typiske dbt-projekter består af lag. Du kan vælge at bruge en tilgang baseret på Medallion-arkitekturen med undermapperne bronze, silver og gold, eller du kan vælge en hvilken som helst struktur, der passer til dine behov. I vores tilfælde definerede vi to lag i Snowflake-lageret: stg som staging-laget og business som laget til fakta-tabeller. Mappestrukturen er kun for vores bekvemmelighed. Du bør matche mapperne i modellerne med dbt_project.yml-filen. Du kan finde staging-modellerne i /chapter_9/snowflakebook/models/staging.

I henhold til konfigurationen i dbt_project.yml har vi valgt at materialisere modellerne som view (det vil sige, at Snowflake opretter visninger). Det er dog også muligt at oprette tabeller. I produktionen bruger vi ofte inkrementelle modeller for at undgå dyre genindlæsninger af data. For at køre alle vores modeller og tilhørende datatests kan du bruge kommandoen dbt build. Alternativt kan du køre kun modellerne med dbt run eller kun tests med dbt test. Desuden kan du køre en given model med dbt run --select kommandoen. Kort sagt, Snowflake opretter en SQL-forespørgsel baseret på dbt-modellerne og udfører den på Snowflake-siden.

Dbt er et SQL-framework, der gør det muligt at omdanne forretningslogik til SQL dbt-modeller med afhængigheder, datatests og dokumentation. Det er nemt at bruge og hurtigt at onboarde sig med. Dbt gør dog ikke det tunge arbejde – det genererer SQL-kommandoer, som du kan gennemgå i /chapter_9/snowflakebook/target eller i logfilerne i /chapter_9/snowflakebook/logs/dbt.log. dbt run bør oprette visninger i jumpstart-databasen, som vist i figur 9-10.

Når dbt-modellerne er klar, kan du begynde at implementere Metabase BI og oprette forbindelse til Snowflake ved at bruge den samme dbt_user. Metabase er et populært BI-værktøj, der adskiller sig fra værktøjer som Tableau, idet det kræver, at du skriver SQL-forespørgsler for hver visualisering, og derefter kombinerer disse i dashboards. Det tilbyder en gratis community edition og en betalt version. Metabase er velegnet til små virksomheder eller som et komplementært BI-værktøj til værktøjer som Tableau og Looker.

Metabase kan implementeres i en container og hostes i container-tjenester som AWS Elastic Container Service eller Azure Kubernetes Service. For at komme i gang med Metabase kan du trække den nyeste officielle Docker-billede og starte containeren. Kør kommandoerne:

bash
docker pull metabase/metabase:latest
docker run -d -p 3000:3000 --name metabase metabase/metabase

Herefter kan du åbne Metabase på http://localhost:3000, registrere dig med din e-mail og oprette forbindelse til Snowflake-databasen. I Metabase kan du udforske eksempler på dashboards i Example-samlingen og derefter oprette dine egne SQL-forespørgsler for at visualisere data.

Det er en god idé at have en separat bruger og rolle for hver tjeneste i en produktionsopsætning. Når forbindelsen til Snowflake er etableret, kan du begynde at skrive SQL-forespørgsler og oprette visualiseringer. Gå tilbage til startsiden på Metabase, klik på New, og indtast din SQL-forespørgsel. Du kan finde eksempler på SQL-forespørgsler i bogens GitHub-repository under /chapter_9/readme.md.

Metabase tillader dig at udforske data, oprette visualiseringer og kombinere dem i dashboards med filtre og parametre for selvbetjent BI. En ekstra fordel ved Metabase er API'en, som giver dig mulighed for at eksekvere rapporter programmatisk fra ETL-værktøjer og sende data eller visualiseringer via e-mail eller besked-apps. Med community edition er alt gratis, bortset fra de ingeniørarbejde, der kræves.

Når vi taler om god praksis ved udvikling med dbt, skal man tage højde for softwareudviklingens bedste metoder. Dbt tillader udvikling med kode, og du kan derfor bruge principper som pre-commit, CI/CD, containerisering, enhedstests osv. Dbt-kode og -moduler opbevares typisk i et git versionssystem. Det anbefales at oprette en udviklingsgren før du begynder arbejdet, for eksempel git checkout feature/new-dbt-model. Når du er færdig, kan du committe og pushe din kode til code review.

Pre-commit hooks kan bruges til automatisk at kontrollere koden før deling med teamet. Du kan finde eksempler på pre-commit hooks til dbt og Snowflake i repository'et i filen .pre-commit-config.yaml i rodmappen og dbt-projektmappen. Eksempler på hooks inkluderer trailing-whitespace, check-yaml, prettier, black, flake8, dbt-checkpoint, og sqlfluff, der hjælper med at holde koden ren og konsistent.

Pre-commit er allerede installeret i requirements.txt, og du kan aktivere det ved at køre:

bash
pre-commit install

For at køre pre-commit manuelt, kan du bruge git-kommandoerne:

bash
git add . git commit -m "Update dbt model"

Alternativt kan du køre:

bash
pre-commit run --all-files

Ved at følge disse praksisser sikrer du, at din dbt-udvikling er effektiv, konsistent og i overensstemmelse med best practices inden for softwareudvikling.

Hvordan Snowflake ændrer landskabet for moderne cloud-analytik

Cloud-teknologier har fundamentalt ændret, hvordan organisationer udfører analyser. Tidligere blev datalager og business intelligence (BI)-projekter betragtet som langsigtede investeringer, som krævede betydelige ressourcer, ekspertise og tid for at blive realiseret. Et succesfuldt BI-projekt kunne tage år at bygge og krævede en omfattende udvikling af dataintegration, serverinfrastruktur og hardwarekøb. På trods af disse investeringer var der ikke nogen garanti for succes. I dag er dette billede ved at ændre sig, takket være cloud-platforme som Snowflake, der tilbyder skalerbare, omkostningseffektive løsninger, der kun opkræver betaling for de ressourcer, der bruges.

I dag har cloud-teknologi gjort det muligt for organisationer at bruge de nyeste værktøjer og teknologier til at fremme deres analyseprojekter. Den store fordel ved cloud er den næsten ubegrænsede lagringskapacitet og muligheden for at skalere beregningsevne dynamisk, samtidig med at der opnås sikkerhed og fleksibilitet. I stedet for at være begrænset af eksisterende infrastruktur kan virksomheder nu hurtigt tilpasse sig nye krav og hurtigt udvikle løsninger, der kan håndtere store datamængder.

Cloud-baserede løsninger som Snowflake tilbyder desuden en brugervenlig model, der fjerner behovet for fysisk hardware og IT-støtte. Når du bevæger dig væk fra ældre datalagerløsninger og over på cloud-baserede systemer, åbner der sig nye muligheder for innovation. Hvor ældre løsninger som Oracle krævede store investeringer i hardware, tillader Snowflake virksomheder at fokusere på at udvikle værdi gennem software og dataanalyse uden at være bundet af de samme fysiske og økonomiske begrænsninger.

Massivt Parallelbehandling (MPP) og dens Rolle i Datalager

Når vi taler om datalagring og behandling, spiller Massivt Parallelbehandling (MPP) en central rolle. MPP gør det muligt for et system at dele opgaver på tværs af flere processorer, som arbejder simultant og effektivt med hver deres hukommelse og operativsystem. Dette er en af de grundlæggende principper bag moderne datalager, da det gør det muligt at håndtere store mængder data hurtigt og effektivt. For eksempel kan MPP-systemer som Snowflake tilbyde massiv parallelle beregninger, hvilket betyder, at flere opgaver kan udføres samtidigt, hvilket drastisk reducerer behandlingstiden.

En god analogi til MPP er en situation, hvor du skal vaske tøj. Forestil dig, at du har to muligheder: Den ene mulighed er at besøge et vaskeri på en stille fredag aften, hvor du kan bruge flere vaskemaskiner samtidigt (MPP), og den anden mulighed er at besøge vaskeriet på en travl lørdag og kun bruge én vaskemaskine (SMP). Den første mulighed, hvor du kan køre flere maskiner parallelt, er selvfølgelig meget hurtigere, da du kan vaske flere ting på én gang.

Snowflake's Unikke Arkitektur og Integration med Generativ AI

Snowflake skiller sig ud ved at kombinere både MPP og SMP (Symmetrisk Multiprocessing) i én platform. Denne tilgang gør det muligt at håndtere både små og store opgaver med stor effektivitet. Snowflake’s arkitektur gør det muligt for virksomheder at opnå den bedste af begge verdener – nemlig muligheden for at bruge mange processorer parallelt, samtidig med at ressourcer deles effektivt.

En af de nyeste tendenser, der er blevet set i cloud-baserede analyseværktøjer, er integrationen af Snowflake med generativ AI. Snowflake understøtter effektivt maskinlæring og AI-arbejdsbelastninger og giver et stærkt fundament for at bygge løsninger, der kan analysere data, generere indsigter og endda skabe nye data. Kombinationen af Snowflake's evne til at håndtere store datamængder og de avancerede funktioner i generativ AI åbner op for en lang række anvendelsesmuligheder, fra automatisering af beslutningsprocesser til forudsigelse af tendenser og skabelse af indhold.

For dataingeniører og udviklere, der er vant til at arbejde med traditionelle datalagerløsninger, kan det virke som et skridt ind i en ny æra. Den fleksibilitet, som cloud-platforme som Snowflake tilbyder, giver dem mulighed for at bygge mere sofistikerede og skalerbare dataanalyser uden de begrænsninger, som tidligere teknologier havde. Denne udvikling betyder, at mange organisationer nu ser på cloud som den foretrukne løsning for fremtidens dataarbejde.

Værdien af at Bygge Real-World Data Applikationer med Snowflake

I denne nye æra af dataanalyse er evnen til at bygge virkelige dataprojekter og applikationer afgørende. Snowflake giver et solidt fundament til at udvikle komplekse applikationer, der kan håndtere både strukturerede og ustrukturerede data. Dette gør det muligt for teams at bygge løsninger, der er både skalerbare og sikre, uden at skulle bekymre sig om de tekniske barrierer, som tidligere har været forbundet med at implementere store datalagringssystemer.

Der er mange muligheder for at anvende Snowflake til at bygge real-world data applikationer. For eksempel kan organisationer bygge løsninger til datadeling på tværs af afdelinger, automatisere dataprocesser eller implementere nye analytiske applikationer, som kan udnytte AI-teknologier til at skabe værdi. Denne tilgang hjælper virksomheder med at forblive konkurrencedygtige og åbner op for nye markedsmuligheder.

Cloud-baserede teknologier som Snowflake og deres integration med avancerede AI-værktøjer betyder, at data nu kan udnyttes på måder, der tidligere var utænkelige. Dette giver ikke blot virksomheder mulighed for at opnå dybere indsigt i deres egne operationer, men det giver også mulighed for at udnytte data på tværs af industrier og forretningsmodeller.