DAPLA jukseark
Sindre Mikael Haugen
2024-12-02
vignette__DAPLA_jukseark.Rmd
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:
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
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")