🦆 Bolagshack

Bolagshack · augusti 2026

Vad är ens en dataplattform?

En dataplattform i miniatyr på din laptop: läs in, städa, modellera, visualisera.

DuckDBFredag60 minuterEnsam eller i par

Välkommen

Välkommen till CoCreates första Bolagshack.

Vi kör en timme på fredagseftermiddagen direkt efter lunch, rakt in i kaklet (dvs fikat)!

Våra tre mål med dagen är att 1: addera ett nytt verktyg i verktygslådan, 2: städa rådata och 3: analysera och-eller visualisera den rengjorda datan för att komma till någon mycket djup insikt.

Prepp

Det finns exempeldata från CoFinder, men roligast blir det om du tar med egen data!

Fundera på vad som kan vara intressant att analysera och preppa en CSV-fil. Det kan vara vad som helst: loggar från din smarta hemautomation, träningsklocka eller elmätare, eller varför inte speltid från Steam, events från Kubernetes-loggen eller commits från din git-historik. Det finns också massor med öppna APIer som du kan skrapa. DuckDB läser CSV, JSON, Parquet och Excel direkt utan problem.

Som förberedelse innan fredag vill vi att du installerar uv (om du inte redan har det!) och DuckDB, samt klonar repot.

uv

Installera uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

eller med din lokala pakethanterare (brew install uv, etc).

Verifiera att det fungerar:

uv --version

duckdb

Installera duckdb:

uv tool install duckdb-cli

Verifiera att det fungerar:

duckdb -c "SELECT 'ready' AS status, version()"

Testa webgränssnittet också, så att du vet att det fungerar innan fredag:

duckdb -ui

repot

Klona repot:

git clone git@github.com:knowit-solutions-cocreate/bolagshack.git

Gör din egen gren:

git switch -c $(whoami)

Uppgiften

Tre mål med dagen:

  1. Bli bekant med DuckDB. Ett nytt verktyg i verktygslådan. Efter idag ska du kunna öppna vilken CSV som helst och ha svar inom en minut.
  2. Rått till rent. Läs in rådata, städa och modellera till något användbart. En dataplattform i miniatyr, på din egen laptop.
  3. Läs in och visualisera valfri datakälla. CoFinder-datan i data/ eller den du tog med själv.

Jobba ensam eller i par. Vi har 60 minuter. När tiden är slut:

  1. Committa det du har till en egen gren i repot, committa och pusha. Oavsett hur långt det kom.
  2. Skriv en rad i #bolagshack på Slack om vad du gjorde och vad du lärde dig. En skärmdump eller en query räcker gott.

En timme är kort, så fokusera!

Sidorna Terminal och Python visar hur varje moment görs med små exempel: dela upp listor, parsa JSON, städa namn, joina. Det är fusklappar: försök själv först, kika där när du kör fast, och skriv din egen SQL.

Städjobbet är hela poängen med dagen, och det som är kvar när person_skill finns är den jobbiga biten. Kör du på CoFinder-datan är det skills som är stökigt: "azure", "microsoft azure" och "azure devops" ska hamna rätt, och det ska bli en skill-tabell av det.

Datan

I data/ finns två CSV-filer (exempeldata från CoFinder):

Fil Innehåll
data/job_skills.csv ~3 400 konsultuppdrag från Verama, Cinode Market m.fl. En rad per uppdrag. Kolumnen skills är en kommaseparerad sträng: "python, sql, azure".
data/people_skills.csv 48 konsulter i teamet. skills är kommaseparerad, skills_detailed är JSON med nivå 1–5 per skill.

Börja med att skapa din egen databas av dessa:

duckdb hack.db

sql
CREATE TABLE jobs   AS SELECT * FROM 'data/job_skills.csv';
CREATE TABLE people AS SELECT * FROM 'data/people_skills.csv';

..and off you go!

Vill du se datan istället för att gissa dig fram i terminalen? Starta webgränssnittet:

duckdb -ui hack.db

Det är det bästa första kommandot oavsett vilken datakälla du kör på.

Egen data

Byt ut sökvägarna ovan mot din egen fil.

DuckDB läser CSV, Parquet, JSON och Excel, lokalt eller via URL:

sh
duckdb -c "SELECT * FROM 'data.csv' LIMIT 5"
duckdb -c "SELECT * FROM 'https://example.com/data.parquet' LIMIT 5"

Krånglar CSV-inläsningen? read_csv('fil.csv', delim=';', header=true) ger dig kontroll över avgränsare, header, kodning osv.

Dokumentation: https://duckdb.org/docs/stable/

Sätt igång!

Här är själva jobbet. Ta stegen i ordning: städa först, analysera sedan. Hinner du inte hela vägen är det helt okej, ett halvfärdigt steg 1 är också ett resultat.

Steg 1: Rått till rent

Hitta det som är stökigt: kommaseparerade kolumner, JSON i strängar, inkonsekventa namn, datum som text.

Du kan använda DESCRIBE och SUMMARIZE som hjälp, eller inspektera okulärt.

Bygg sedan rena tabeller av rådatan.

För CoFinder-datan till exempel person_skill och job_skill (en rad per skill), och kanske en skill-tabell där "azure", "microsoft azure" och "azure devops" har fått ordning på sig.

Steg 2: Analysera och visualisera

Hitta något i den rena datan och visa det.

Frågor att börja med om du kör CoFinder-datan:

  • Vilka skills efterfrågas mest? Hur har det ändrats under året?
  • Var finns gapet mellan vad marknaden vill ha och vad teamet kan?
  • Vem i teamet matchar bäst mot ett givet uppdrag?

Skriv frågor direkt i SQL eller använda Python (eller vilket språk eller metod som du vill, ärligt talat).

Du kan levla upp genom att använda ett ramverk eller verktyg som du kanske inte använt förut:

  • Utforska datan i DuckDBs web-UI
  • Testa att göra notebooks i Marimo!
  • Be Claude generera en Streamlit-app åt dig!
  • Gå djupt med Pandas eller Polars

Extra: dbt-duckdb / SQLMesh

Räcker inte SQL i en fil? dbt-duckdb eller SQLMesh ger dig lager, tester och beroenden mellan modeller. Lite extra avancerat!

Bonus: Exponera datan

För den som blir klar snabbt eller gjort det här förut eller vill fortsätta längre.

Gör datan tillgänglig för någon eller något annat än dig själv.

  • HTTP-API. FastAPI + DuckDB. Endpoints som /skills/top, /people?skill=python. Bygg en liten frontend mot det om du vill (eller låt Claude göra det).
  • MCP-server. Exponera DuckDB som verktyg åt Claude, Copilot eller Cursor med FastMCP. Ett query(sql)-verktyg räcker för att kunna ställa frågor på svenska mot datan. Bonus: en resurs som beskriver schemat.
  • Parquet + publicering. Lägg dina Parquet-filer på Blob Storage eller S3 och läs dem från DuckDB via URL. Enklaste "data platform" som finns.