Kopier metadata mellom Datadoc-filer
copy_metadata.RdKopierer variabelmetadata fra en original Datadoc-fil til en annen
Datadoc-fil. Metadata kopieres automatisk for variabler som har samme
short_name i begge filer. Det kan i tillegg angis eksplisitte koblinger
mellom variabler med ulike kortnavn.
Usage
copy_metadata(
filsti_datadoc_egen,
filsti_datadoc_original,
variabler = NULL,
ekskluder_variabler = NULL,
overwrite = TRUE,
dato_unntak = NULL
)Arguments
- filsti_datadoc_egen
En tekststreng med filstien til Datadoc-filen som skal oppdateres. Filnavnet må inneholde periode og versjon på formen
_pYYYY_vN, for eksempel_p2025_v1__DOC.json.- filsti_datadoc_original
En tekststreng med filstien til Datadoc-filen som metadata skal kopieres fra.
- variabler
NULLeller en navngitt tekstvektor med eksplisitte koblinger mellom variabler. Navnet på hvert element angirshort_namei filen som skal oppdateres, mens verdien angirshort_namei originalfilen. Standardverdien erNULL.- ekskluder_variabler
NULLeller en tekstvektor medshort_namefor variabler i mottakerfilen som ikke skal endres. For disse variablene kopieres verken metadata eller gyldighetsperiode. En variabel kan ikke samtidig være oppgitt idato_unntak. Standardverdien erNULL.- overwrite
En logisk verdi som angir om eksisterende metadata skal erstattes. Når verdien er
TRUE, kopieres metadata for alle aktuelle variabler. Når verdien erFALSE, hoppes variabler over dersom feltetnamei mottakerfilen ikke erNULL. Standardverdien erTRUE.- dato_unntak
NULLeller en data frame med egne gyldighetsperioder for enkeltvariabler. Metadata kopieres på vanlig måte for disse variablene, men feltenecontains_data_fromogcontains_data_untiloverskrives med periodene angitt idato_unntak. Dataframen må inneholde kolonneneshort_name,contains_data_fromogcontains_data_until. Datoene skal være på formatet"YYYY-MM-DD". En variabel kan ikke samtidig være oppgitt iekskluder_variabler. Standardverdien erNULL.
Value
Den oppdaterte Datadoc-strukturen som en liste. Strukturen skrives
samtidig tilbake til filen angitt i filsti_datadoc_egen.
Details
Variabler kan ekskluderes fullstendig fra oppdateringen ved hjelp av
ekskluder_variabler. For disse variablene kopieres verken metadata eller
gyldighetsperiode.
Gyldighetsperioden for øvrige variabler i mottakerfilen settes automatisk
ut fra perioden i filnavnet. For eksempel gir _p2025_v1 perioden
2025-01-01 til 2025-12-31. Det kan angis egne gyldighetsperioder for
enkeltvariabler ved hjelp av dato_unntak.
Funksjonen finner først alle variabler som har samme short_name i de to
Datadoc-filene. Metadata for disse variablene kopieres automatisk.
Argumentet variabler kan brukes til å koble variabler som har ulike
kortnavn i de to filene. En kobling som er angitt eksplisitt i
variabler, får forrang dersom mottakervariabelen også inngår blant
variablene med identiske kortnavn.
Variabler som er oppgitt i ekskluder_variabler, fjernes fra listen over
variabler som skal få kopiert metadata. De hoppes også over når
gyldighetsperioden oppdateres. Disse variablene beholdes derfor uendret i
mottakerfilen.
For hver øvrige variabel kopieres hele metadataobjektet fra originalfilen.
Feltet short_name erstattes deretter med kortnavnet som brukes i filen
som oppdateres.
Når overwrite = FALSE, regnes en variabel som å ha eksisterende metadata
dersom feltet name ikke er NULL. Andre metadatafelt tas ikke med i
denne vurderingen.
Gyldighetsperioden oppdateres uavhengig av overwrite. Dette innebærer at
også variabler som ikke får kopiert metadata fordi de allerede har
metadata, får oppdatert feltene contains_data_from og
contains_data_until.
Variabler i ekskluder_variabler er unntatt fra denne oppdateringen og
beholdes fullstendig uendret.
Standardperioden hentes fra filnavnet til filsti_datadoc_egen.
Et filnavn som inneholder _p2025_v1 gir
contains_data_from = "2025-01-01" og
contains_data_until = "2025-12-31".
Dersom enkelte variabler har en annen gyldighetsperiode, kan disse oppgis
i dato_unntak. Metadata kopieres på vanlig måte, men perioden som er
angitt i dato_unntak, erstatter standardperioden for de aktuelle
variablene.
Samme variabel kan ikke være oppgitt både i ekskluder_variabler og
dato_unntak.
Følgende kontroller utføres før filen endres:
overwritemå være én enkelt logisk verdi;short_namemå være unik i begge Datadoc-filene;variablermå være en navngitt tekstvektor dersom argumentet ikke erNULL;samme mottakervariabel kan ikke oppgis flere ganger i
variabler;alle eksplisitt oppgitte variabler må finnes i de respektive Datadoc-filene;
ekskluder_variablermå være en tekstvektor dersom argumentet ikke erNULL;alle variabler i
ekskluder_variablermå finnes i mottakerfilen;filnavnet til mottakerfilen må inneholde en periode på formen
_pYYYY_vN;dato_unntakmå inneholde de nødvendige kolonnene;hver variabel kan bare forekomme én gang i
dato_unntak;alle variabler i
dato_unntakmå finnes i mottakerfilen;samme variabel kan ikke forekomme både i
ekskluder_variablerogdato_unntak; ogdatoene i
dato_unntakmå være gyldige datoer på formatet"YYYY-MM-DD".
Den oppdaterte strukturen skrives til filsti_datadoc_egen med
jsonlite::write_json(). Den eksisterende filen overskrives.
See also
copy_metadata_variable() for å kopiere metadata bare for eksplisitt
angitte variabler.
Examples
if (FALSE) { # \dontrun{
# Kopier metadata og sett perioden til 2025 for alle aktuelle variabler
copy_metadata(
filsti_datadoc_egen =
"/buckets/data/resultat_p2025_v1__DOC.json",
filsti_datadoc_original =
"/buckets/data/resultat_p2024_v1__DOC.json"
)
# Kopier bare til variabler som ikke allerede har metadata
copy_metadata(
filsti_datadoc_egen =
"/buckets/data/resultat_p2025_v1__DOC.json",
filsti_datadoc_original =
"/buckets/data/resultat_p2024_v1__DOC.json",
overwrite = FALSE
)
# Legg til eksplisitte koblinger mellom ulike kortnavn
copy_metadata(
filsti_datadoc_egen =
"/buckets/data/resultat_p2025_v1__DOC.json",
filsti_datadoc_original =
"/buckets/data/resultat_p2024_v1__DOC.json",
variabler = c(
kjoenn = "sex",
bostedskommune = "kommune"
)
)
# Ikke gjør noen endringer i enkelte variabler
copy_metadata(
filsti_datadoc_egen =
"/buckets/data/resultat_p2025_v1__DOC.json",
filsti_datadoc_original =
"/buckets/data/resultat_p2024_v1__DOC.json",
ekskluder_variabler = c(
"orgnr_frtk",
"navn_frtk"
)
)
# Angi egne gyldighetsperioder for enkelte variabler
dato_unntak <- data.frame(
short_name = c(
"orgnr_frtk",
"navn_frtk"
),
contains_data_from = c(
"2024-01-01",
"2020-01-01"
),
contains_data_until = c(
"2025-12-31",
"2025-12-31"
)
)
copy_metadata(
filsti_datadoc_egen =
"/buckets/data/resultat_p2025_v1__DOC.json",
filsti_datadoc_original =
"/buckets/data/resultat_p2024_v1__DOC.json",
dato_unntak = dato_unntak
)
} # }