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)!
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:
- 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.
- 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.
- 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:
- Committa det du har till en egen gren i repot, committa och pusha. Oavsett hur långt det kom.
- Skriv en rad i
#bolagshackpå 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 (och example.py i repot) visar hur varje
moment görs på små exempel: dela upp listor, parsa JSON, städa namn, joina. Kika där
när du kör fast, men 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.
Vad är en dataplattform nu igen?

Så här ser en dataplattform ut i princip, fråga bara Gabriel!
DuckDB är den gröna kolumnen idag: read_csv är ingestion, en .db-fil är storage, SQL är
transformation. Typ.
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
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:
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.