Filbeskrivelsene kan lagres som json med en metode, og åpnes med en annen (uten å bruke passord). Om man skal jobbe med mange statbanktabeller i ett løp, så kan en ok inndeling av notebooks være:
- Enkelt notebook for å hente alle filbeskrivelser (krever lastepassord)
- Ett notebook per statbanktabell som omformer fra “statistikkfil” til det som skal sendes til statbanken. Kan bruke filbeskrivelsen til avrunding, validering. (krever ikke lastepassord)
- Enkelt notebook for å sende alle tabellene til statbanken (krever lastepassord)
Man kan i teorien lagre filbeskrivelses-jsonfilene hvor man vil, de er ikke å anse som sensitive, men de kan utløpe på dato når metadata i statbanken blir oppdatert. Det kan derfor anbefales at du lagrer dem i Dapla-lab instansen din, dvs. i /work utenfor git-repoet du har klonet. De vil da bli slettet når du sletter tjenesten din, og det kan være ønskelig så de må hentes på nytt neste gang.
Ett eksempel på dette ligger i Vgogjen-produksjonsløpet.
Først oppretter du en notebook for å hente alle filbeskrivelser:
notebook
# Notebook for å hente alle filbeskrivelser
= StatbankClient() # Krever passord
client for tab_id in config.statbanktabell_ider:
= client.get_description(tab_nr)
filbesk f"~/work/filbesk/{tab_nr}.json") # Sørg for at mappe finnes først kanskje filbesk.to_json(
Deretter kan du opprette en notebook per statistikkbanktabell. Under er et eksempel på hvordan en slik notebook kan se ut:
notebook
# Notebooks for alle statbanktabeller
= "12958"
tab_nr = StatbankClient.read_description_json(f"filbesk/{tab_nr}.json") # Krever ikke passord
filbesk = filbesk.transferdata_template(tab_ut)
data
filbesk.validate(data)= filbesk.round_data(data)
data for datfil in filbesk.subtables.keys():
= (path_root + "VG_gjforing/" + datfil).replace(".dat", ".parquet")
path data[datfil].to_parquet(path)
Til slutt oppretter du en egen notebook som laster alle tabellene til Statistikkbanken:
notebook
# Notebook for å laste alle tabellene
= StatbankClient(date=config.publiseringsdato) # Krever passord
client for tab_id in config.statbanktabell_ider:
= client.read_description_json(f"~/work/filbesk/{tab_nr}.json")
filbesk = {}
data for datfil in filbesk.subtables.keys():
= (path_root + "VG_gjforing/" + datfil).replace(".dat", ".parquet")
fil = pd.read_parquet(fil)
data[datfil] client.transfer(data, tabell)