Datadoc
Datadoc er SSBs system for dokumentasjon av datasett. Datadoc lagrer dokumentasjonen i et strukturert format ved siden av dataene. Man kan jobbe programmatisk med metadataene til Datadoc med Datadoc-delen av dapla-toolbelt-metadata.
Første gang man skal dokumentere et datasett i Datadoc så er det anbefalt å bruke det grafiske grensesnittet i Datadoc-editor. I løpende produksjon er det dermed anbefalt å benytte en programmatisk tilnærming gjennom Datadoc
-delen av Python-pakken dapla-toolbelt-metadata.
Forberedelser
For å benytte Datadoc-delen av dapla-toolbelt-metadata må man først installere pakken i et ssb-project:
Terminal
poetry add dapla-toolbelt-metadata
Funksjonalitet
Under finner du hvilken funksjonalitet som tilbys for Datadoc i dapla-toolbelt-metadata.
Kopiere fra forrige periode uten endringer
Hvis man har dokumentert datasett for periode t med Datadoc-editor, så kan man programmatisk dokumentere periode t+1 ved å benytte Datadoc
-klassen i dapla-toolbelt-metadata. Det forutsetter at det ikke er noen endringer i kolonnene i datasettet, og at eneste endring er at nye observasjoner. Da kan man dokumentere den nye perioden på følgende måte:
Notebook
from dapla_metadata.datasets import Datadoc
= Datadoc(
meta 1="gs://ssb-dapla-felles-data-produkt-prod/datadoc/sykefratot/klargjorte_data/person_testdata_p2022_v1.parquet",
dataset_path2="gs://ssb-dapla-felles-data-produkt-prod/datadoc/sykefratot/klargjorte_data/person_testdata_p2021_v1__DOC.json",
metadata_document_path
)3 meta.write_metadata_document()
- 1
-
dataset_path
angir det nye datasettet som skal dokumenteres. - 2
-
metadata_document_path
angir sti til tidligere periodes metadata. - 3
-
write_metadata_document
er kommandoen som produserer de nye metadataene og skriver de til filengs://ssb-dapla-felles-data-produkt-prod/datadoc/sykefratot/klargjorte_data/person_testdata_p2022_v1__DOC.json
.
Det veldig viktig at man ikke bruker denne metoden hvis det er endringer i hvilke kolonner som finnes i datasettet eller andre større endringer. Metoden over antar at den eneste informasjonen som har endret seg er den som kan leses ut av filstien. Ved større endringer i selve dataene bør man heller gjøre en manuell gjennomgang av metadataene med Datadoc-editor, eller bruke metoden som beskrives i neste avsnitt.
Kopiere fra forrige periode med endringer
Hvis det har skjedd noen endringer i datasettet ditt, men mange av kolonnene har matchende navn og likt innhold, så kan man lage et nytt metadatadokument basert metadataene til en annen fil.
Notebook
from dapla_metadata.datasets import Datadoc
= Datadoc(
meta ="gs://ssb-dapla-felles-data-produkt-prod/datadoc/sykefratot/klargjorte_data/dataset-to-document_p2022_v1.parquet",
dataset_path="gs://ssb-dapla-felles-data-produkt-prod/existing-metadata__DOC.json",
metadata_document_path=True,
errors_as_warnings )
I koden over angir vi det nye datasettet som skal dokumenteres i dataset_path=
. Deretter angir vi filstien til metadatadokumentet i metadata_document_path=
som det delvis skal kopieres metadata fra. Til slutt angir vi at feilmeldinger skal behandles som advarsler med argumentet errors_as_warnings=True
.
Med dette utgangspunktet kan man deretter gjøre endringer på evt. nye eller eksisterende kolonner ved å enten bruke [Datadoc-editor], eller en programmatisk tilnærming som forklart senere i kapitlet.
Opprette metadata for ny fil
Det er i de fleste tilfeller anbefalt å opprette metadata for en ny fil med Datadoc-editor fordi den har et er mer brukervennlig grensesnitt. Men i noen tilfeller kan det være nyttig å opprette et metadatadokument for Datadoc programmatisk.
Notebook
from dapla_metadata.datasets import Datadoc
= Datadoc(
meta = "/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2022-12-31_v1.parquet",
dataset_path
)
meta.write_metadata_document()
I koden over så genererer vi et metadatadokument for en gitt parquet-fil og skriver den til samme filstien som filen som dokumenteres med write_metadata_document()
. Metdatadokumentet blir i eksempelet over skrevet til:
/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2023-12-31_v1__DOC.json
Ved generering av metadataene blir all informasjon som kan genereres automatisk, faktisk generert. Dette fungerer på samme måte som når man åpner et udokumentert datasett i Datadoc-editor. I boksen under ser man et eksempel på json-filen som blir generert ved å kjøre koden over.
{
"document_version": "0.0.1",
"datadoc": {
"percentage_complete": 66,
"document_version": "4.0.0",
"dataset": {
"short_name": "person_testdata",
"assessment": "PROTECTED",
"dataset_status": "DRAFT",
"dataset_state": "PROCESSED_DATA",
"name": null,
"description": null,
"data_source": null,
"population_description": null,
"version": "1",
"version_description": null,
"unit_type": null,
"temporality_type": null,
"subject_field": null,
"keyword": null,
"spatial_coverage_description": [
{
"languageCode": "nb",
"languageText": "Norge"
},
{
"languageCode": "nn",
"languageText": "Noreg"
},
{
"languageCode": "en",
"languageText": "Norway"
}
],
"contains_personal_data": false,
"use_restriction": null,
"use_restriction_date": null,
"custom_type": null,
"id": "a7be0245-8d58-48b2-9158-3df338406cc7",
"owner": "dapla-felles",
"file_path": "/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2023-12-31_v1.parquet",
"metadata_created_date": "2025-04-09T18:10:26.185913Z",
"metadata_created_by": "obr@ssb.no",
"metadata_last_updated_date": "2025-04-09T18:10:26.185349Z",
"metadata_last_updated_by": "obr@ssb.no",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
},
"variables": [
{
"short_name": "fnr",
"data_element_path": null,
"name": null,
"data_type": "STRING",
"variable_role": "MEASURE",
"definition_uri": null,
"is_personal_data": "NOT_PERSONAL_DATA",
"data_source": null,
"population_description": null,
"comment": null,
"temporality_type": null,
"measurement_unit": null,
"multiplication_factor": null,
"format": null,
"classification_uri": null,
"special_value": null,
"invalid_value_description": null,
"custom_type": null,
"id": "cf8a0c60-4a62-4a93-bbbe-143053b3bf5f",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
},
{
"short_name": "sivilstand",
"data_element_path": null,
"name": null,
"data_type": "STRING",
"variable_role": "MEASURE",
"definition_uri": null,
"is_personal_data": "NOT_PERSONAL_DATA",
"data_source": null,
"population_description": null,
"comment": null,
"temporality_type": null,
"measurement_unit": null,
"multiplication_factor": null,
"format": null,
"classification_uri": null,
"special_value": null,
"invalid_value_description": null,
"custom_type": null,
"id": "f25d96d6-4a49-472d-b1f0-4805a1546daf",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
},
{
"short_name": "bostedskommune",
"data_element_path": null,
"name": null,
"data_type": "STRING",
"variable_role": "MEASURE",
"definition_uri": null,
"is_personal_data": "NOT_PERSONAL_DATA",
"data_source": null,
"population_description": null,
"comment": null,
"temporality_type": null,
"measurement_unit": null,
"multiplication_factor": null,
"format": null,
"classification_uri": null,
"special_value": null,
"invalid_value_description": null,
"custom_type": null,
"id": "cf139119-4a97-4b1f-a793-a2501285c81b",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
},
{
"short_name": "inntekt",
"data_element_path": null,
"name": null,
"data_type": "INTEGER",
"variable_role": "MEASURE",
"definition_uri": null,
"is_personal_data": "NOT_PERSONAL_DATA",
"data_source": null,
"population_description": null,
"comment": null,
"temporality_type": null,
"measurement_unit": null,
"multiplication_factor": null,
"format": null,
"classification_uri": null,
"special_value": null,
"invalid_value_description": null,
"custom_type": null,
"id": "c9357b37-ff1a-4f83-a332-a5239aaa3cf6",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
},
{
"short_name": "bankinnskudd",
"data_element_path": null,
"name": null,
"data_type": "INTEGER",
"variable_role": "MEASURE",
"definition_uri": null,
"is_personal_data": "NOT_PERSONAL_DATA",
"data_source": null,
"population_description": null,
"comment": null,
"temporality_type": null,
"measurement_unit": null,
"multiplication_factor": null,
"format": null,
"classification_uri": null,
"special_value": null,
"invalid_value_description": null,
"custom_type": null,
"id": "38f67ddf-bd07-4bdb-8ea0-411b0aaf511e",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
},
{
"short_name": "dato",
"data_element_path": null,
"name": null,
"data_type": "STRING",
"variable_role": "MEASURE",
"definition_uri": null,
"is_personal_data": "NOT_PERSONAL_DATA",
"data_source": null,
"population_description": null,
"comment": null,
"temporality_type": null,
"measurement_unit": null,
"multiplication_factor": null,
"format": null,
"classification_uri": null,
"special_value": null,
"invalid_value_description": null,
"custom_type": null,
"id": "33353e56-7f5f-409f-915a-644949137228",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
}
]
},
"pseudonymization": null
}
Endre enkeltfelt
I noen tilfeller kan det være nyttig å endre enkeltelementer i en metadatadokument på en programmatisk. F.eks. hvis det eneste som endrer seg ved hver periode er informasjonen i et felt, så kan man kopiere inn forrige periodes metadatadokument, og deretter endre verdien til det ene feltet som har endret seg. Det er også nyttig i de tilfellene der man ønsker å opprette metadata for ny fil.
I kodeeksempelet under så ønsker vi å oppdatere feltet multiplication_factor
siden det ikke har noen verdi fra før. Først henter vi inn metadataene til en filen i objektet meta
.
Notebook
from dapla_metadata.datasets import Datadoc
# Leser inn metadataene
= Datadoc(
meta ="/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2023-12-31_v1.parquet",
dataset_path
)
#Oppdaterer verdien
meta.variables_lookup["inntekt"
= 1000 # Variable expressed in thousands of kroner
].multiplication_factor
#Skriver de nye metadataene til dokumentet
meta.write_metadata_document()
Etter at vi har hentet inn metadataene i koden over, så oppdaterer vi verdien til multiplication_factor = 1000
, og til slutt skriver vi tilbake til metadatadokumentet som er lagret sammen med datasettet.
Noen informasjonelementer i metadatadokumentet lagres som lister av dictionaries. F.eks. så lagres elementet spatial_coverage_description
(Geografisk dekningsområde på norsk) på denne måten siden den er flerspråklig. Denne har en litt mer kompleks syntaks for oppdatering:
Notebook
from dapla_metadata import datadoc_model as model
from dapla_metadata.datasets import Datadoc
# Leser inn metadataene
= Datadoc(
meta ="/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2023-12-31_v1.parquet",
dataset_path
)
#Oppdaterer verdien
= model.LanguageStringType(
meta.dataset.spatial_coverage_description =[
root="nb", languageText="Test persondata"),
model.LanguageStringTypeItem(languageCode="nn", languageText="Testar persondata"),
model.LanguageStringTypeItem(languageCode="en", languageText="Test of persondata")
model.LanguageStringTypeItem(languageCode
]
)
#Skriver de nye metadataene til dokumentet
meta.write_metadata_document()
I koden over ser vi at oppdatering av flerspråklige informasjonselementer gjøres med å først indentifisere feltet vi ønsker å endre, meta.dataset.spatial_coverage_description
. Dette kan leses som at vi ønsker å endre meta
-objektet, under dataset
-delen, og feltet spatial_coverage_description
. Deretter kommer en syntax som er lik for alle flerspråklige felt.
I boksen under finnes flere eksempler på hvordan man endrer informasjon i enkeltfelter.
Notebook
from dapla_metadata import datadoc_model as model
from dapla_metadata.datasets import Datadoc
# Importerer/genererer et metadataobjekt
= Datadoc(
meta ="resources/sykefratot/klargjorte_data/person_testdata_p2022_v1.parquet",
dataset_path
)
# Endre "name" på datasettnivå
= model.LanguageStringType(
meta.dataset.name =[
root="nb", languageText="Test persondata"),
model.LanguageStringTypeItem(languageCode="nn", languageText="Test persondata"),
model.LanguageStringTypeItem(languageCode
model.LanguageStringTypeItem(="en", languageText="Test personal data"
languageCode
),
],
)
# Endre "description" på datasettnivå (flerspråklig)
= model.LanguageStringType(
meta.dataset.description =[
root
model.LanguageStringTypeItem(="nb",
languageCode="Data er kun for test formål",
languageText
),
model.LanguageStringTypeItem(="nn",
languageCode="Data er kun for test formål",
languageText
),
model.LanguageStringTypeItem(="en",
languageCode="For testing purposes only",
languageText
),
],
)
# Endre "data_source" på datasettnivå
= (
meta.dataset.data_source "23" # Refers to code in https://www.ssb.no/klass/klassifikasjoner/712
)
#Endre "use_restriction" på dataettsnivp
= model.UseRestriction.PROCESS_LIMITATIONS
meta.dataset.use_restriction
# Endre "name" på variabelnivå for variabelen "inntekt" (flerspråklig)
"inntekt"].name = model.LanguageStringType(
meta.variables_lookup[=[
root="nb", languageText="Inntekt"),
model.LanguageStringTypeItem(languageCode="nn", languageText="Inntekt"),
model.LanguageStringTypeItem(languageCode
model.LanguageStringTypeItem(="en",
languageCode="Income",
languageText
),
],
)
# Endre "multiplication_factor" på variabelnivå for variabelen "inntekt"
meta.variables_lookup["inntekt"
= 1000 # Variable expressed in thousands of kroner
].multiplication_factor
# # Endre "is_personal_data" på variabelnivå for variabelen "inntekt"
meta.variables_lookup["inntekt"
= model.IsPersonalData.NOT_PERSONAL_DATA ].is_personal_data
Lese ut informasjon
Siden metadataene som er laget med Datadoc lagres ved siden av filen som dokumenteres som en json-fil, så kan man lese inn hele filen i en notebook og printe den ut hvis man ønsker det:
Notebook
import json
= "/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2023-12-31_v1__DOC.json"
file_path
with open(file_path, "r", encoding="utf-8") as f:
= json.load(f)
data
print(json.dumps(data, indent=2, ensure_ascii=False))
{
"document_version": "0.0.1",
"datadoc": {
"percentage_complete": 66,
"document_version": "4.0.0",
"dataset": {
"short_name": "person_testdata",
"assessment": "PROTECTED",
"dataset_status": "DRAFT",
"dataset_state": "PROCESSED_DATA",
"name": null,
"description": null,
"data_source": null,
"population_description": null,
"version": "1",
"version_description": null,
"unit_type": null,
"temporality_type": null,
"subject_field": null,
"keyword": null,
"spatial_coverage_description": [
{
"languageCode": "nb",
"languageText": "Test persondata"
},
{
"languageCode": "nn",
"languageText": "Testar persondata"
},
{
"languageCode": "en",
"languageText": "Test of persondata"
}
],
"contains_personal_data": false,
"use_restriction": null,
"use_restriction_date": null,
"custom_type": null,
"id": "a7be0245-8d58-48b2-9158-3df338406cc7",
"owner": "dapla-felles",
"file_path": "/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2023-12-31_v1.parquet",
"metadata_created_date": "2025-04-09T18:10:26.185913Z",
"metadata_created_by": "obr@ssb.no",
"metadata_last_updated_date": "2025-04-09T18:58:28.808974Z",
"metadata_last_updated_by": "obr@ssb.no",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
},
"variables": [
{
"short_name": "fnr",
"data_element_path": null,
"name": null,
"data_type": "STRING",
"variable_role": "MEASURE",
"definition_uri": null,
"is_personal_data": "NOT_PERSONAL_DATA",
"data_source": null,
"population_description": null,
"comment": null,
"temporality_type": null,
"measurement_unit": null,
"multiplication_factor": null,
"format": null,
"classification_uri": null,
"special_value": null,
"invalid_value_description": null,
"custom_type": null,
"id": "cf8a0c60-4a62-4a93-bbbe-143053b3bf5f",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
},
{
"short_name": "sivilstand",
"data_element_path": null,
"name": null,
"data_type": "STRING",
"variable_role": "MEASURE",
"definition_uri": null,
"is_personal_data": "NOT_PERSONAL_DATA",
"data_source": null,
"population_description": null,
"comment": null,
"temporality_type": null,
"measurement_unit": null,
"multiplication_factor": null,
"format": null,
"classification_uri": null,
"special_value": null,
"invalid_value_description": null,
"custom_type": null,
"id": "f25d96d6-4a49-472d-b1f0-4805a1546daf",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
},
{
"short_name": "bostedskommune",
"data_element_path": null,
"name": null,
"data_type": "STRING",
"variable_role": "MEASURE",
"definition_uri": null,
"is_personal_data": "NOT_PERSONAL_DATA",
"data_source": null,
"population_description": null,
"comment": null,
"temporality_type": null,
"measurement_unit": null,
"multiplication_factor": null,
"format": null,
"classification_uri": null,
"special_value": null,
"invalid_value_description": null,
"custom_type": null,
"id": "cf139119-4a97-4b1f-a793-a2501285c81b",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
},
{
"short_name": "inntekt",
"data_element_path": null,
"name": null,
"data_type": "INTEGER",
"variable_role": "MEASURE",
"definition_uri": null,
"is_personal_data": "NOT_PERSONAL_DATA",
"data_source": null,
"population_description": null,
"comment": null,
"temporality_type": null,
"measurement_unit": null,
"multiplication_factor": 1000,
"format": null,
"classification_uri": null,
"special_value": null,
"invalid_value_description": null,
"custom_type": null,
"id": "c9357b37-ff1a-4f83-a332-a5239aaa3cf6",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
},
{
"short_name": "bankinnskudd",
"data_element_path": null,
"name": null,
"data_type": "INTEGER",
"variable_role": "MEASURE",
"definition_uri": null,
"is_personal_data": "NOT_PERSONAL_DATA",
"data_source": null,
"population_description": null,
"comment": null,
"temporality_type": null,
"measurement_unit": null,
"multiplication_factor": null,
"format": null,
"classification_uri": null,
"special_value": null,
"invalid_value_description": null,
"custom_type": null,
"id": "38f67ddf-bd07-4bdb-8ea0-411b0aaf511e",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
},
{
"short_name": "dato",
"data_element_path": null,
"name": null,
"data_type": "STRING",
"variable_role": "MEASURE",
"definition_uri": null,
"is_personal_data": "NOT_PERSONAL_DATA",
"data_source": null,
"population_description": null,
"comment": null,
"temporality_type": null,
"measurement_unit": null,
"multiplication_factor": null,
"format": null,
"classification_uri": null,
"special_value": null,
"invalid_value_description": null,
"custom_type": null,
"id": "33353e56-7f5f-409f-915a-644949137228",
"contains_data_from": "2021-12-31",
"contains_data_until": "2023-12-31"
}
]
},
"pseudonymization": null
}
Man kan lese ut metadata fra Datadoc-dokumenterte datasett med dapla-toolbelt-metadata. I eksempelet under henter vi ut metadataene til en fil og printer ut informasjonen på datasettnivå:
Notebook
from pprint import pprint
from dapla_metadata.datasets import Datadoc
= Datadoc(
meta ="/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2023-12-31_v1.parquet",
dataset_path
)
vars(meta.dataset)) pprint(
'assessment': 'PROTECTED',
{'contains_data_from': datetime.date(2021, 12, 31),
'contains_data_until': datetime.date(2023, 12, 31),
'contains_personal_data': False,
'custom_type': None,
'data_source': None,
'dataset_state': 'PROCESSED_DATA',
'dataset_status': 'DRAFT',
'description': None,
'file_path': '/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2023-12-31_v1.parquet',
'id': UUID('a7be0245-8d58-48b2-9158-3df338406cc7'),
'keyword': None,
'metadata_created_by': 'obr@ssb.no',
'metadata_created_date': datetime.datetime(2025, 4, 9, 18, 10, 26, 185913, tzinfo=TzInfo(UTC)),
'metadata_last_updated_by': 'obr@ssb.no',
'metadata_last_updated_date': datetime.datetime(2025, 4, 9, 18, 10, 26, 185349, tzinfo=TzInfo(UTC)),
'name': None,
'owner': 'dapla-felles',
'population_description': None,
'short_name': 'person_testdata',
'spatial_coverage_description': LanguageStringType(root=[LanguageStringTypeItem(languageCode='nb', languageText='Norge'), LanguageStringTypeItem(languageCode='nn', languageText='Noreg'), LanguageStringTypeItem(languageCode='en', languageText='Norway')]),
'subject_field': None,
'temporality_type': None,
'unit_type': None,
'use_restriction': None,
'use_restriction_date': None,
'version': '1',
'version_description': None}
Over hentet vi ut fra datasets
-delen av dokumentet med Python sin innebygde funksjon vars()
for å få output’en mer lesevennlig. Vi kan også printe ut informasjon fra variables
-delen av dokumentet:
Notebook
from pprint import pprint
from dapla_metadata.datasets import Datadoc
= Datadoc(
meta ="/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2023-12-31_v1.parquet",
dataset_path
)
# Formattere en pen print
for var in meta.variables:
vars(var))
pprint(print("-" * 60)
'classification_uri': None,
{'comment': None,
'contains_data_from': datetime.date(2021, 12, 31),
'contains_data_until': datetime.date(2023, 12, 31),
'custom_type': None,
'data_element_path': None,
'data_source': None,
'data_type': 'STRING',
'definition_uri': None,
'format': None,
'id': UUID('cf8a0c60-4a62-4a93-bbbe-143053b3bf5f'),
'invalid_value_description': None,
'is_personal_data': 'NOT_PERSONAL_DATA',
'measurement_unit': None,
'multiplication_factor': None,
'name': None,
'population_description': None,
'short_name': 'fnr',
'special_value': None,
'temporality_type': None,
'variable_role': 'MEASURE'}
------------------------------------------------------------
'classification_uri': None,
{'comment': None,
'contains_data_from': datetime.date(2021, 12, 31),
'contains_data_until': datetime.date(2023, 12, 31),
'custom_type': None,
'data_element_path': None,
'data_source': None,
'data_type': 'STRING',
'definition_uri': None,
'format': None,
'id': UUID('f25d96d6-4a49-472d-b1f0-4805a1546daf'),
'invalid_value_description': None,
'is_personal_data': 'NOT_PERSONAL_DATA',
'measurement_unit': None,
'multiplication_factor': None,
'name': None,
'population_description': None,
'short_name': 'sivilstand',
'special_value': None,
'temporality_type': None,
'variable_role': 'MEASURE'}
------------------------------------------------------------
'classification_uri': None,
{'comment': None,
'contains_data_from': datetime.date(2021, 12, 31),
'contains_data_until': datetime.date(2023, 12, 31),
'custom_type': None,
'data_element_path': None,
'data_source': None,
'data_type': 'STRING',
'definition_uri': None,
'format': None,
'id': UUID('cf139119-4a97-4b1f-a793-a2501285c81b'),
'invalid_value_description': None,
'is_personal_data': 'NOT_PERSONAL_DATA',
'measurement_unit': None,
'multiplication_factor': None,
'name': None,
'population_description': None,
'short_name': 'bostedskommune',
'special_value': None,
'temporality_type': None,
'variable_role': 'MEASURE'}
------------------------------------------------------------
'classification_uri': None,
{'comment': None,
'contains_data_from': datetime.date(2021, 12, 31),
'contains_data_until': datetime.date(2023, 12, 31),
'custom_type': None,
'data_element_path': None,
'data_source': None,
'data_type': 'INTEGER',
'definition_uri': None,
'format': None,
'id': UUID('c9357b37-ff1a-4f83-a332-a5239aaa3cf6'),
'invalid_value_description': None,
'is_personal_data': 'NOT_PERSONAL_DATA',
'measurement_unit': None,
'multiplication_factor': 1000,
'name': None,
'population_description': None,
'short_name': 'inntekt',
'special_value': None,
'temporality_type': None,
'variable_role': 'MEASURE'}
------------------------------------------------------------
'classification_uri': None,
{'comment': None,
'contains_data_from': datetime.date(2021, 12, 31),
'contains_data_until': datetime.date(2023, 12, 31),
'custom_type': None,
'data_element_path': None,
'data_source': None,
'data_type': 'INTEGER',
'definition_uri': None,
'format': None,
'id': UUID('38f67ddf-bd07-4bdb-8ea0-411b0aaf511e'),
'invalid_value_description': None,
'is_personal_data': 'NOT_PERSONAL_DATA',
'measurement_unit': None,
'multiplication_factor': None,
'name': None,
'population_description': None,
'short_name': 'bankinnskudd',
'special_value': None,
'temporality_type': None,
'variable_role': 'MEASURE'}
------------------------------------------------------------
'classification_uri': None,
{'comment': None,
'contains_data_from': datetime.date(2021, 12, 31),
'contains_data_until': datetime.date(2023, 12, 31),
'custom_type': None,
'data_element_path': None,
'data_source': None,
'data_type': 'STRING',
'definition_uri': None,
'format': None,
'id': UUID('33353e56-7f5f-409f-915a-644949137228'),
'invalid_value_description': None,
'is_personal_data': 'NOT_PERSONAL_DATA',
'measurement_unit': None,
'multiplication_factor': None,
'name': None,
'population_description': None,
'short_name': 'dato',
'special_value': None,
'temporality_type': None,
'variable_role': 'MEASURE'}
------------------------------------------------------------
Nå som vi har sett alle informasjonselementer i metadatadokumentet, så kan vi velge hente ut spesifikke elementer som vi er interessert i. Under leses variabelen inntekt inn og all informasjon printes ut:
Notebook
from pprint import pprint
from dapla_metadata.datasets import Datadoc
= Datadoc(
meta ="/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2023-12-31_v1.parquet",
dataset_path
)
= meta.variables_lookup["inntekt"]
inntekt
vars(inntekt)) pprint(
'classification_uri': None,
{'comment': None,
'contains_data_from': datetime.date(2021, 12, 31),
'contains_data_until': datetime.date(2023, 12, 31),
'custom_type': None,
'data_element_path': None,
'data_source': None,
'data_type': 'INTEGER',
'definition_uri': None,
'format': None,
'id': UUID('c9357b37-ff1a-4f83-a332-a5239aaa3cf6'),
'invalid_value_description': None,
'is_personal_data': 'NOT_PERSONAL_DATA',
'measurement_unit': None,
'multiplication_factor': 1000,
'name': None,
'population_description': None,
'short_name': 'inntekt',
'special_value': None,
'temporality_type': None,
'variable_role': 'MEASURE'}
Videre kan vi hente ut verdien til feltet multiplication_factor
for variabelen inntekt med følgende kode:
Notebook
from dapla_metadata.datasets import Datadoc
= Datadoc(
meta ="/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2023-12-31_v1.parquet",
dataset_path
)
meta.variables_lookup["inntekt"
].multiplication_factor
Videre kan vi hente Dapla-teamet som eier datasettet ved hente ut verdien til feltet owner
i dataset
-delen av dokumentet:
Notebook
from dapla_metadata.datasets import Datadoc
= Datadoc(
meta ="/buckets/produkt/datadoc/brukertest/3/sykefratot/klargjorte_data/person_testdata_p2021-12-31_p2023-12-31_v1.parquet",
dataset_path
)
meta.dataset.owner