Dette repoet brukes til versjonskontroll av airflowjobber og en mengde ad-hoc innsiktsarbeid i PO Pensjon. Sistnevnte består hovedsakelig av jupyter notebooks og sql-spørringer mot PEN-databasen. Koden er beregnet på å kjøre i KNADA (se docs.knada.io).
Dersom en airflowjobb feiler vil det sendes en melding til slack på kanalen #pensak-airflow-alerts.
flowchart TD;
B[Skedulerte jobber i Airflow] -- leser data --> A[PEN/PSAK];
C[Utforskning i Jupyter notebook/KNADA VM] -- leser data --> A;
B -- oppdaterer datafortelling --> E[Datafortelling];
B -- oppdaterer tabell --> D[BigQuery];
F[Dashboard i Metabase] -- leser data --> D;
- KNADA: En samling verktøy med tilgang til onprem-ressurser. Hovedbestanddelene er jupyterhub/VM og airflow.
- Dataprodukt: En tabell i BigQuery som er registrert på datamarkedsplassen
- Datafortelling: En rapport som er laget med quarto eller datastory og publisert på datamarkedsplassen
- Quarto: Verktøy for å kompilere en .html-fil (datafortelling) eller andre typer filer fra en jupyter notebook
- Datastory: Deprecated verktøy for å publisere datafortellinger.
- Airflow: Verktøy for å skedulere jobber. Brukes til å oppdatere dataprodukter og datafortellinger.
- Jupyter notebook: En interaktiv notebook som kan inneholde kode, tekst og bilder. Brukes til å utforske data og lage datafortellinger.
Alt i ordlista er bedre dokumentert i nada sin dokumentasjon.
Hemmeligheter for airflowjobbene i knada-namespacet pensjon-saksbehandling lagres i tilhørende secret i Google Secret Manager. Lenke finnes i knorten. Servicebrukeren har automatisk tilgang til denne secreten, men den må leses ekspisitt inn i minnet for hver jobb. Nødvendige hemmeligheter er i skrivende stund følgende:
- Upersonlig brukernavn (
pen-airflow) og passord med tilgang til prod-kopi av PEN-databasen. Ligger i vault. Merk at denne brukeren kun har tilgang til tabellene den allerede spør mot. For tilgang til flere tabeller, ta kontakt med db-teamet. - Upersonlig brukernavn (
pensjon-psak-static-readonly) og passord til psak-databasen (postgres). Ligger i vault. - Teamtoken i datamarkedsplassen for pensjon-saksbehandling. Hentes fra datamarkedsplassen.
For utforskning i notebook/VM skal det brukes personlige versjoner av brukernavn og passord. Disse skal lagres i din personlige hemmelighet som kan opprettes fra knorten. For å få tilgang til denne hemmeligheten må du kjøre gcloud auth login --update-adc.
Flere av jobbene kommuniserer med BigQuery og trenger derfor tilgang til å lese og/eller skrive til tabeller i BigQuery. Servicebrukeren til teamet trenger følgende roller:
BigQuery Data Viewerpå hver tabell den leser fraBigQuery Data Editorpå hver tabell den skriver tilBigQuery Job Useri prosjektet hvor queryjobben kjøresBigQuery Read Session Useri prosjektet hvor queryjobben kjøres. Denne rollen trengs bare for enkelte jobber. Dette gjelder jobbene som brukerbigquery.Client.queryi stedet forbigquery.Client.query_jobi følge github copilot.
Dette håndterer vi selv i google cloud console.
Under følger en kort beskrivelse av innholdet (eller tiltenkt innhold) i hver mappe i dette repoet.
Funksjoner som ofte brukes på tvers av notebooks og andre kodefiler, samt noen støttefunksjoner brukt i bare én notebook.
Her legges Jupyter notebooks som brukes til utforskning.
Filer av typen .qmd (quarto markdown). Fungerer omtrent som jupyter notebooks og det er disse som blir kompilert til datafortellinger.
DAGs som plukkes opp av airflowinstansen til pensjon-saksbehandling. Her defineres schedules, kjøretidsmiljø og annen metadata for hver jobb. Instansen administeres gjennom knorten.
En requirements.txt som inneholder pakker som skal installeres på toppen av baseimaget i airflowjobbene som oppdaterer quarto. De fleste jobbene bruker bare defaultimaget som nada-teamet håndterer. Dersom det trengs et eget image for en jobb, kan det bygges med repoet pensak-airflow-images. Det er viktig å oppdatere både baseimage og versjonsnummeret på pakkene i requirements.txt regelmessig for å unngå sårbarheter.
Python-scripts som kjøres av airflowjobber. Det er disse som oppdaterer dataprodukter og tidligere datafortellinger av typen datastory (deprecated).
Diverse sql-spørringer som er brukt mot PEN og enkelte andre databaser. Mange blir brukt i notebooks, quarto eller airflowjobber. Alle spørringene bør kvalitetsikres før de gjenbrukes.