Skip to contents

Her finner du en oversikt over hvordan å lese inn data fra Google Cloud Storage (DAPLA) til R. Se under “Reference” for mer dokumentasjon av funksjonene.

For å ta i bruk funksjonene i fellesr må du kalle biblioteket med:

Pakken er installert i Jupyterlab (DAPLA og produksjonssonen) og i RStudio Server (produksjonssonen). Dersom du bruker et virtuelt miljø med renv kan pakken installeres slik:

renv::init()
renv::install("statisticsnorway/fellesr")

Wrapper-funksjoner fra arrow/googleCloudStorageR

Funksjonen read_SSB inneholder følgende wrapper-funksjoner:

  • read_parquet
  • read_parquet_sf
  • read_feather
  • read_csv
  • read_rds
  • read_xml
  • read_json
  • open_dataset

Funksjonen write_SSB inneholder følgende wrapper-funksjoner:

  • write_parquet
  • write_sf_parquet
  • write_feather
  • write_csv
  • write_rds
  • write_dataset

Andre funksjoner

  • gcs.list.files
  • gcs_list_objects
  • gcs_delete_object
  • gcs_bucket

Se innholdet i buckets på Google Cloud Storage

Funksjonene list.files og gcs_list_objects kan brukes til å liste opp filene som finnes i Google Cloud Storage buckets. list.files kan brukes på alle mapper og undermapper, mens gcs_list_objects kun fungerer på “bøttenivå”. Til gjengjeld vises også filstørrelse og endringsdato.

fellesr::gcs.list.files("ssb-prod-dapla-felles-data-delt/R_smoke_test/")

fellesr::gcs_list_objects("ssb-prod-dapla-felles-data-delt/R_smoke_test") %>% dplyr::arrange(desc(updated))

Slette filer fra Google Cloud Storage

Funksjonen gcs_delete_object kan brukes til å slette filer fra en Google Cloud Storage bucket.

fellesr::gcs_delete_object("ssb-prod-dapla-felles-data-delt/R_smoke_test/write_SSB_parquet_test.parquet")

Lese inn data fra Google Cloud Storage

Funksjonen read_SSB kan brukes til å lese inn .parquet-, .feather-, .csv-, .rds-, .xml- og json-filer fra Google Cloud Storage ved å oppgi full sti til “bøtten” + filnavn. Det er også mulig å kun lese inn valgte kolonner og kolonnenavnene spesifiseres i col_select. Dersom filen er lagret som en “multifile dataset” (partitioned), dvs. en fil som ser ut som en mappe, kan denne lese inn ved å skrive navnet på mappen (uten endelsen .parquet).

# Parquet
read_SSB_parquet <- fellesr::read_SSB("ssb-prod-dapla-felles-data-delt/R_smoke_test/1987.parquet")
read_SSB_parquet <- fellesr::read_SSB("ssb-prod-dapla-felles-data-delt/R_smoke_test/1987.parquet", col_select = c("Year", "Month"))
read_SSB_mfd <- fellesr::read_SSB("ssb-prod-dapla-felles-data-delt/R_smoke_test/enda_en_ny_mappe") # OBS: mangler eksempeldata

# Feather
read_SSB_feather <- fellesr::read_SSB("ssb-prod-dapla-felles-data-delt/R_smoke_test/1987.feather")

# CSV
read_SSB_csv <- fellesr::read_SSB("ssb-prod-dapla-felles-data-delt/R_smoke_test/1987.csv")

# JSON
read_SSB_json <- fellesr::read_SSB("ssb-prod-dapla-felles-data-delt/R_smoke_test/XXX.json") # OBS: mangler eksempeldata

# XML
read_SSB_xml <- fellesr::read_SSB("ssb-prod-dapla-felles-data-delt/R_smoke_test/XXX.xml") # OBS: mangler eksempeldata

# RDS
read_SSB_rds <- fellesr::read_SSB("ssb-prod-dapla-felles-data-delt/R_smoke_test/1987.rds")

Lese inn kartdata lagret som .parquet-filer

For å laste inn kartdata lagret som .parquet-filer må man spesifisere sf = TRUE i funksjonen read_SSB. For mer informasjon om hvordan å jobbe med kartdata på DAPLA, se Kartdata i DAPLA-manualen.

data <- fellesr::read_SSB("ssb-prod-dapla-felles-data-delt/GIS/testdata/veger_oslo.parquet", sf = TRUE)

Lese inn deler av datasett (.parquet-filer m.m.)

Funksjonen open_dataset kan brukes til å lese deler av datasett (bl.a. .parquet-, .feather- og .csv-filer) fra Google Cloud Storage. Det lages en forbindelse til mappen der filen ligger og deretter kan man bruke argumenter fra dplyr, som f.eks. filter og select, før man bruker collect til å lese inn dataene i R. For øyeblikket er det ikke mulig å kun lese inn én fil som ligger i en mappe så dersom dataene ikke er “partitioned” må filen ligge i en egen undermappe dersom den skal lese inn alene.

data <- fellesr::open_dataset("ssb-prod-dapla-felles-data-delt/R_smoke_test/1987_1996_dataset") %>%
 dplyr::filter(Year == 1996 & TailNum == "N2823W") %>%
 dplyr::select(Year, Month, DayofMonth, TailNum) %>%
 dplyr::collect()

Funksjonen open_dataset kan også brukes til å lese inn deler av kartdata lagret som .parquet-filer. På samme måte som vanlige .parquet-filer må filen som leses inn ligge i en mappe der det kun ligger én fil. Filstien peker til mappen der filen ligger. Deretter kan man bruke dplyr-verb for å filtrere rader og selektere kolonner før man til slutt leser inn filene med sfarrow::read_sf_dataset().

data <- fellesr::open_dataset("ssb-prod-dapla-felles-data-delt/GIS/Kart/2023/ABAS_grunnkrets_flate_2023/") %>%
  dplyr::filter(KOMMUNENR == "0301") %>%
  sfarrow::read_sf_dataset()

Skrive data til Google Cloud Storage

Funksjonen write_SSB kan brukes til å skrive .parquet-, .feather-, .csv- og .rds-filer til Google Cloud Storage.

# PARQUET
fellesr::write_SSB(data, "ssb-prod-dapla-felles-data-delt/R_smoke_test/write_SSB_parquet_test.parquet")

# "Multifile" datasett
fellesr::write_SSB(data, "ssb-prod-dapla-felles-data-delt/R_smoke_test/write_SSB_multifile_dataset_test", partitioning = TRUE)

# FEATHER
fellesr::write_SSB(data, "ssb-prod-dapla-felles-data-delt/R_smoke_test/write_SSB_parquet_test.feather")

# CSV
fellesr::write_SSB(data, "ssb-prod-dapla-felles-data-delt/R_smoke_test/write_SSB_parquet_test.csv")

# RDS
fellesr::write_SSB(data, "ssb-prod-dapla-felles-data-delt/R_smoke_test/write_SSB_rds_test.rds")