Skip to main content

Importere filer

Saga tilbyr funksjonalitet for å laste opp flatfiler til plattformen for å kunne analysere disse. Denne funksjonaliteten kan eksempelvis brukes i tilfeller hvor man kun har tilgang på et engangsuttrekk, eller hvor man ønsker å lage en pipeline med filer som kilde.

Opprett en filimport

Når du ønsker å laste opp filer på Saga, må du først opprette en filimport. Dette gjør du ved å logge inn på Min Saga, og velge "Filimport" fra sidemenyen.

Når en filimport har blitt opprettet, vil du på GCP få tilgang til en GCS-bøtte og et BigQuery datasett på GCP, som vist på figuren under.

I tillegg vil du også få en Service Account og tilhørende nøkkel. Denne kan deles med de som skal ha skrivetilgang til GCS-bøtten.

Filimport med GCS-bøtte og BQ-datasett

Last opp filer

På hver filimport kan du laste opp så mange filer som du vil. Det fungerer også å laste disse opp samtidig ved å velge flere av gangen. Dette gjør du ved å gå inn på GCS-bøtten til din filimport og velge "Upload". Etter en stund vil data fra filene havne i BigQuery. Filimport bruker datagrunnlaget i filene til å detektere skjema.

Vi anbefaler én filimport per type skjema, slik at det blir lettere å analysere på dataene. Hver fil blir til en ny tabell i BigQuery.

Følgende filformater støttes:

Konfigurere skilletegn i kommaseparerte filer (CSV)

Som standard er skilletegnet i CSV-filer , (komma). Hvis du har filer som bruker andre skilletegn, så kan du spesifisere skilletegn ved å legge en konfigurasjonsfil i roten på GCS-bøtten til din filimport. Filen må hete config.yaml og må inneholde følgende:

file_import_config:
field_delimiter: <ditt_skilletegn>

Hvor <ditt_skilletegn> byttes ut med ønsket skilletegn.

Eksempel for å lese inn semikolonseparerte filer

file_import_config:
field_delimiter: ;

Begrensninger

Bruker du konfig-filen til å spesifisere skilletegn, kan du kun laste opp CSV-filer i bøtten. Alle filene må bruke samme skilletegn. Trenger du å importere flere med forskjellige skilletegn må du opprette individuelle filimporter for hvert skilletegn.

Sammenstille data fra mange filer

Har du laget én filimport per type skjema, kan du lage et view som sammenstiller tabellene som ligger i en filimport. Dette gjør at du alltid kan få oppdaterte data fra filimporten ved å spørre på viewet. SQL-koden under viser hvordan du lager et slikt view. Merk at du kan tilpasse spørringen dersom du f.eks. ikke trenger alle kolonnene, eller ønsker å deduplisere identiske rader.

CREATE VIEW <ditt_view> AS (
SELECT * FROM `<filimport>.*`
)

Dersom det lastes opp en ny fil til en eksisterende filimport hvor det har forekommet mindre endringer i skjema, f.eks i form av en ny kolonne, vil den nye kolonnen også dukke opp i viewet.

Viewet vil vise alle kolonner i alle tabellene i filimporten selv om det mangler data i noen av radene. Dermed er det ikke mulig å fjerne en kolonne når den først har blitt opprettet.

Filer med inkompatible skjema vil gjøre at viewet blir ugyldig. Disse bør deles i separate filimporter. Et eksempel på en slik inkompabilitet er at en kolonne har to ulike datatyper i to ulike filer.

Status på importerte filer

Filimport sin BigQuery inneholder en tabell, import_logs, hvor du kan se status på filimportjobbene. For hver fil som lastes opp i en filimport vil det dukke opp en ny rad i tabellen, hvor du kan se metadata og status på skrivingen av data fra GCS til BigQuery. Tabellen er partisjonert på dato og inneholder informasjon om alle filimporter som finnes. Dette betyr at dersom du kun ønsker å se status over dine/teamets filimporter, så må du gjøre en spørring mot tabellen.

Eksempel på spørringer:

SELECT *
FROM `saga-file-import-stm.import_logs.import_log_20230624`
WHERE targetDataset = "<ditt_datasett>"
SELECT *
FROM `saga-file-import-stm.import_logs.import_log_*`
WHERE bucket = "<din_gcs_bucket>"