Standards
Modulen standards i dapla-toolbelt-metadata tilbyr metoder for å sjekke om filer i bøtter er i tråd med SSBs definerte navnestandard. Metodene inkluderer:
- Validere at bøtter, mapper og filer eksisterer
- Validere at filstier som ikke eksisterer følger navnestandard1
- Informasjon om hva som bryter med navnestandarden.
For å effektivisere validering av bøtter med store mengder filer, benytter metoden asynkronitet.
Funksjonalitet
standards tilbyr to typer av funksjonalitet. Den første er å sjekke om en bøtte, mappe eller fil følger standarden. Den andre er å produsere en rapport som oppsummerer resultatet av valideringen.
Validering
For å sjekke om en bøtte, mappe eller fil følger navnestandarden kan man benytte funksjonen check_naming_standard(). Den returnerer en liste med resultater for alle objektene du har bedt om å få validert.
Notebook
from dapla_metadata.standards.standard_validators import check_naming_standard
results = await check_naming_standard("<bøttenavn/mappe/filsti>")
resultsValidationResult(
success=False,
file_path="/buckets/produkt/stat/inndata/bil_v1.parquet",
messages=[
"Det er oppdaget brudd på SSB-navnestandard:"
],
violations=[
"Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn"
]
)Siden metoden bruker asynkrone kall, må nøkkelordet await brukes foran metodenavnet.
For å få tilgang til spesifikke deler av resultatet, kan du bruke punktnotasjon .. Hvis du for eksempel ønsker å hente ut listen med regelbrudd fra det første valideringsresultatet, kan du gjøre følgende:
results[0].violationsHvis du har validert et stort antall filer så kan du benytte følgende kode for å få ut resultatene på en mer lesbar form:
Notebook
violations = [r for r in results if not r.success]
if not violations:
print("Gratulerer, ingen feil å vise")
else:
for v in violations:
print(v.file_path)
print("\t" + "\n\t".join(v.messages))
print("\t\t" + "\n\t\t".join(v.violations) + "\n")gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/butikker_kongsvinger.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/butikkbygg_kongsvinger.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/butikkbygg_oslo.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/noen_boliger_kongsvinger.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/noen_boliger_oslo.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/butikker_oslo.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/noen_boligbygg_oslo.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/noen_boligbygg_kongsvinger.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/NVE_Trafostasjon_punkt_p2023.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/enkle_kommuner.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/bygg_kongsvinger.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/veger_kongsvinger.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/noen_tettsteder_2023.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/bygg_oslo.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/veger_oslo.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
Filnavn mangler gyldighetsperiode ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
Filnavn mangler versjon ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#filnavn
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/ABAS_kommune_flate_p2024_v1.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/SSB_tettsted_flate_p2022_v1.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapper
gs://ssb-dapla-felles-data-produkt-prod/GIS/testdata/SSB_tettsted_flate_p2023_v1.parquet
Det er oppdaget brudd på SSB-navnestandard:
Mappe for datatilstand mangler ref: https://manual.dapla.ssb.no/statistikkere/navnestandard.html#obligatoriske-mapperRapport
Hvis du ønsker en kort oppsummering og vurdering av resultatet, kan du importere følgende metode:
Notebook
from dapla_metadata.standards.standard_validators import generate_validation_report
report = generate_validation_report(results)Metoden tar en liste med valideringsresultater som input:
Og hvis alt ser bra ut:
For å få tilgang til spesifikke deler av rapporten, kan du bruke punktnotasjon .. Hvis du for eksempel ønsker å hente ut kun suksess raten i prosent, kan du gjøre følgende:
report.success_rate()Eller hvis du ønsker direkte tilgang til tallene:
report.num_files_validated
report.num_success
report.num_failuresHvis man ønsker å benytte valideringsfunksjonaliteten i koden som kjøres i en statistikkproduksjon, så kan pre-commit hooks feile på grunn av nøkkelordet await benyttes utenfor en asynkron funksjon. En enkel løsning er å legge til # noqa: F704 på samme linje som await, slik:
Notebook
results = await check_naming_standard("") # noqa: F704Fotnoter
Når man validerer en filsti som ikke eksisterer så får man beskjed om at
Filen eksisterer ikke. Validerer uansett..↩︎
