diff --git a/arkitektur/materialisering/index.html b/arkitektur/materialisering/index.html index 8e7412a..7192897 100644 --- a/arkitektur/materialisering/index.html +++ b/arkitektur/materialisering/index.html @@ -1201,16 +1201,24 @@

Materialiseringsstrategier

Hva er materialiseringer i dbt?. dbt-oracle støtter alle former for materialisering.

Generelt er det en god ide å følge Best practices for materializations fra dbt labs.

-

Det er likevel noen avvik: -1. Staging modeller bør hovedsakelig være views. - - Men pseduonymisering skal skje så tidlig som mulig, og derfor er det nødvendig at kilder som inneholder personnøkler blir lastet inkrementelt. Det er ofte et krav om at rådata blir slettet etter 6 måneder. -2. Intermediate ved kompleks logikk. Kjør views når du kan. Når views går for tregt, har du tre valg: - 1. Kjøre table materialiseringer. tabeller blir droppet, purget og rekjørt med alt innhold fra spørringen i modellfilen. Ikke lurt ved ved større mengder data, både ytelsesmessig og lagring i flere lag. - 2. Incrememental. Tabellen bevares og nye endrede rader blir lagt til med merge. - 3. Delta last med table models ... trenger POC -3. Marts skal være stabil. Det er her alle spørringer fra konsumenter kjøres, og det er viktig for basen å opparbeide statistikk på spørringer som kjører ofte. - - materialized_view er for MVP og små datamengder, jher er ikke ytelse noe problem. - - For løsninger med større datamenger, kjør inkrementell last med partisjonering og indeksering.

+

Det er likevel noen avvik:

+
    +
  1. Staging modeller bør hovedsakelig være views. +
  2. +
  3. Intermediate ved kompleks logikk. Kjør views når du kan. Når views går for tregt, har du tre valg:
      +
    1. Kjøre table materialiseringer. tabeller blir droppet, purget og rekjørt med alt innhold fra spørringen i modellfilen. Ikke lurt ved ved større mengder data, både ytelsesmessig og lagring i flere lag.
    2. +
    3. Incrememental. Tabellen bevares og nye endrede rader blir lagt til med merge.
    4. +
    5. Delta last med table models ... trenger POC
    6. +
    +
  4. +
  5. Marts skal være stabil. Det er her alle spørringer fra konsumenter kjøres, og det er viktig for basen å opparbeide statistikk på spørringer som kjører ofte. +
  6. +
diff --git a/search/search_index.json b/search/search_index.json index 565d216..9cd3472 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Introduksjon til dbt","text":"

dbt (data build tool) er et SQL basert transformasjonsvekt\u00f8y som lar deg modularisere og skrive testbar SQL kode. dbt s\u00f8rger for at SQLene blir kj\u00f8rt i riktig rekkef\u00f8lge slik at sluttproduktet blir oppdatert korrekt.

En SQL fil i dbt blir kalt en modell i dbt. Modeller kan materialiseres p\u00e5 ulike m\u00e5ter. Som view, tabell eller rett og slett en SQL snutt som kan gjenbrukes i flere modeller etter DRY-prinsippet.

dbt er IKKE et extract-load verkt\u00f8y. Det betyr at dataene som skal transformeres allerede m\u00e5 ligge i databasen dbt er koblet til. dbt krever alts\u00e5 at data er lastet p\u00e5 forh\u00e5nd, med feks en pythonjobb eller kafkakonsument. Dataene trenger ikke n\u00f8dvendigvis ligge i samme komponentskjema eller samme BigQuery prosjekt. S\u00e5 lenge dataene er tilgjengelig p\u00e5 samme database og dbt service brukeren har tilgang til \u00e5 lese dataene er du good to go.

dbt kommer b\u00e5de i som open source i form av dbt-core og i en egen cloud versjon, dbt cloud. Cloud versjonen st\u00f8tter kun skydatabaser som feks. BigQuery og Snowflake. dbt Cloud kan derfor ikke brukes mot Oracle onprem databasen til datavarehus. For datasett som befinner seg p\u00e5 datamarkedsplassen i BigQuery, kan dbt Cloud v\u00e6re en mulighet.

For Oracle on-prem benytter vi dbt-oracle som er en python pakke som baserer seg p\u00e5 dbt-core. Oracle er ikke offisielt st\u00f8ttet av dbt, men Oracle har tatt ansvar for community connectoren og og blir aktiv vedlikeholdt og fortl\u00f8pende oppdatert til siste versjon av dbt-core. For \u00e5 n\u00e5 on-prem Oracle m\u00e5 vi som kjent benytte utviklerimage. Denne guiden tar for seg installasjon og oppsett av dbt-oracle p\u00e5 vdi utvikler gjennom Visual Studio Code.

"},{"location":"#lenker","title":"Lenker","text":"

F\u00f8r du g\u00e5r gjennom detaljene p\u00e5 hvordan dbt b\u00f8r settes opp er det lurt \u00e5 bli kjent med hvordan dbt fungerer. Nedenfor er det et knippe nyttige lenker som hjelper deg med \u00e5 komme igang og l\u00e6re de viktigste kommandoene og funksjonene i dbt.

"},{"location":"#kurs-dbt-fundamentals","title":"Kurs - dbt fundamentals","text":"

Det er sterkt anbefalt \u00e5 starte med \u00e5 g\u00e5 gjennom fundamentals kurset til dbt labs. Dette kurset bruker dbt cloud, men mesteparten av innholdet kan overf\u00f8res til dbt-core. Bruk gjerne GCP dev milj\u00f8et til teamet for \u00e5 sette opp testprosjektet i BigQuery, men husk p\u00e5 \u00e5 slette ressursene i etterkant

"},{"location":"#designprinsipper","title":"Designprinsipper","text":"

How to design a dbt model from scratch. Hvordan b\u00f8r du tenke n\u00e5 du designer nye modeller med dbt? Det er fort gjort \u00e5 bomme p\u00e5 f\u00f8rste fors\u00f8k, og det koster mye tid.

"},{"location":"#dimensjonsmodellering","title":"Dimensjonsmodellering","text":"

Kimball er fortsatt relevant med dbt. Building a Kimball dimensional model with dbt

"},{"location":"#bok","title":"Bok","text":"

Det er nylig (juni 2023) lansert en bok om Data Engineering with dbt. Boken inneholder instroduksjon til data engineering generelt og endelt om ulike skydatabaser i tillegg til grunnleggende bruk av dbt. Kanskje den mest interessante delen er kapittel 8 som omhandler testing med dbt.

"},{"location":"#nyttige-lenker","title":"Nyttige lenker","text":"

dbt's egne guider: Lessons

Community basert samling av lenker: awsome-dbt

"},{"location":"#hvorfor-skal-jeg-bruke-dbt-jeg-kan-jo-kjre-sql-med-python","title":"Hvorfor skal jeg bruke dbt? Jeg kan jo kj\u00f8re SQL med Python","text":"

Det er riktig. Dersom du bare skal kj\u00f8re noen enkle SQL sp\u00f8rringer er det kanskje like greit \u00e5 sette opp en Pythonjobb som kj\u00f8rer SQLen for deg. Men med en gang antall sp\u00f8rringer eller kompleksiteten p\u00e5 sp\u00f8rringene \u00f8ker vil dbt hjelpe med med \u00e5 strukturere koden og holde oversikt over rekkef\u00f8lgen. Det er ikke uvanlig at en komponent best\u00e5r av 30 eller flere SQL filer som avhenger av hverandre.

"},{"location":"Installasjon-p%C3%A5-VDI/dbt-power-user/","title":"dbt Power User","text":"

dbt Power User er en VS Code extension, og gir oss en rekke nyttige verkt\u00f8y, som f.eks.:

dbt Power User p\u00e5 GitHub

"},{"location":"Installasjon-p%C3%A5-VDI/dbt-power-user/#installasjon-og-oppsett","title":"Installasjon og oppsett","text":"

Installeres via VS Code Marketplace, f\u00f8lg installasjonsrutinene til Altimate

"},{"location":"Installasjon-p%C3%A5-VDI/dbt-power-user/#utover-standardinstallasjon-ma-flgende-hensyn-tas-for-bruk-pa-vdi-utvikler-og-mot-oracle-dvh","title":"Utover standardinstallasjon m\u00e5 f\u00f8lgende hensyn tas for bruk p\u00e5 VDI Utvikler og mot Oracle DVH:","text":"

dbt Power User krever at man setter opp milj\u00f8variabler med credentials via PowerShell, f\u00f8r VS Code startes opp i samme PowerShell-sesjon. Dette gj\u00f8re med skriptet start_vscode_dbt.ps1

F\u00f8lg denne guiden for \u00e5 sette opp Visual Studio Code med riktige milj\u00f8variable:

  1. Klon dette repoet: https://github.com/navikt/dbt-i-nav/ til en lokal mappe p\u00e5 utivklerimage/VDI

  2. Lag en snarvei p\u00e5 skrivebordet til start_vscode_dbt.ps1 som n\u00e5 ligger lokalt p\u00e5 VDI (inne i mappen du nettopp klonet) slik:

  3. H\u00f8yreklikk p\u00e5 den nye snarveien og velg Egenskaper

  4. Skriptet er generelt og krever at stien til et gyldig dbt-prosjekt settes som argument i tillegg til schemanavnet dbt skal bruke som proxy. Fyll derfor inn f\u00f8lgende tekst i M\u00e5l: powershell.exe -noexit -ExecutionPolicy Bypass -File \"C:\\sti til dbt-i-nav\\start_vscode_dbt.ps1\" c:\\sti\\til\\dbt-prosjekt\\ databaseskjemanavn og juster i forhold til stiene p\u00e5 ditt image.

  5. Kopier snarveien og endre stiene for hvert dbt prosjekt du vil sette opp

  6. Start Visual Stusdio Code ved \u00e5 dobbeltklikke p\u00e5 snarveien.

  7. Det hender skriptet oppdateres, s\u00e5 det er lurt \u00e5 hente siste kode fra github innimellom.

"},{"location":"Installasjon-p%C3%A5-VDI/dbt-power-user/#oracle-oppsett-for-preview-query","title":"Oracle oppsett for Preview query","text":"

Preview query-template m\u00e5 endres for Oracle-bruk: 1. \u00c5pne Settings ved \u00e5 trykke CTRL + , 2. S\u00f8k etter dbt.queryTemplate 3. Endre skript til select * from ({query}) where ROWNUM <= {limit}

Ref.: #dbtquerytemplate-for-oracle

"},{"location":"Installasjon-p%C3%A5-VDI/dbt-power-user/#erfaringer-feil-som-har-oppstatt-ved-bruk-av-dbt-power-user","title":"Erfaringer - feil som har oppst\u00e5tt ved bruk av dbt Power User:","text":""},{"location":"Installasjon-p%C3%A5-VDI/dbt/","title":"DBT","text":""},{"location":"Installasjon-p%C3%A5-VDI/dbt/#oppsett-av-dbt-prosjekter","title":"Oppsett av dbt prosjekter","text":"

Vi har laget et ferdig oppsett av et dbt prosjekt tilpasset NAV dvh. Enten lag et nytt repo basert p\u00e5 dvh_template. Deretter m\u00e5 dbt_template kopieres inn for \u00e5 f\u00e5 integrert dbt prosjektet.

Resten av denne siden omhandler manuelt oppsett av dbt-oracle uten virteul. F\u00f8lg denne guiden hvis du ikke \u00f8nsker automatisk oppsett i Visual Studio Code.

"},{"location":"Installasjon-p%C3%A5-VDI/dbt/#oppsett-av-sertifikater-til-pip","title":"Oppsett av sertifikater til pip","text":"

Til vanlig bruker pip sitt eget sertifikat for \u00e5 validere at vi laster ned pakker fra riktig server. Siden VDI bruker en webproxy for \u00e5 kommunisere med omverdenen vill vi f\u00e5 en feilmeling ved pip install xxx.

Error

13:42:24  Encountered an error: External connection exception occurred:\nHTTPSConnectionPool(host='hub.getdbt.com', port=443): Max retries exceeded\nwith url: /api/v1/index.json (Caused by SSLError(SSLCertVerificationError(1,\n'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get\nlocal issuer certificate (_ssl.c:1108)')))\n

For \u00e5 fikse feilen kan vi installere pakkene setuptools-scm og pip-system-certs som f\u00e5r pip til \u00e5 bruke Windows Certificate Store istedenfor.

pip install setuptools-scm pip-system-certs --trusted-host pypi.org --trusted-host  files.pythonhosted.org\n

Det finnes en offisiell oracle adapter for dbt v1.x. Gjerne start med \u00e5 ta en titt p\u00e5 denne installasjonsguiden f\u00f8rst.

"},{"location":"Installasjon-p%C3%A5-VDI/dbt/#installasjon","title":"Installasjon","text":"

dbt kan installeres sammen med oracle adapteren med kommandoen:

pip install dbt-oracle\n

Nedlasting feiler

$ pip install dbt-oracle\nWARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)'))': /simple/dbt-oracle/\n\n...\n\nCould not fetch URL https://pypi.org/simple/dbt-oracle/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/dbt-oracle/ (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)')))\n

Sjekk om du har gjort oppsett av sertifikater til pip.

Installasjon feiler

I noen tilfeller har vi opplevd at Microsoft Visual C++ mangler. Feilmeldingen kan se slik ut:

...\nBuilding wheels for collected packages: cx-Oracle\nBuilding wheel for cx-Oracle (pyproject.toml) ... error\nerror: subprocess-exited-with-error\n\n\u00d7 Building wheel for cx-Oracle (pyproject.toml) did not run successfully.\n\u2502 exit code: 1\n\u2570\u2500> [8 lines of output]\n      C:\\Users\\RA_S167159\\AppData\\Local\\Temp\\pip-build-env-lh09agh5\\overlay\\Lib\\site-packages\\setuptools\\config\\expand.py:144: UserWarning: File 'C:\\\\Users\\\\RA_S167159\\\\AppData\\\\Local\\\\Temp\\\\pip-install-ki6mcccg\\\\cx-oracle_5a1e160a6cb5498187fe05d5b5637d8c\\\\README.md' cannot be found\n        warnings.warn(f\"File {path!r} cannot be found\")\n    pip_system_certs: ERROR: could not register module: No module named 'wrapt'\n    running bdist_wheel\n    running build\n    running build_ext\n    building 'cx_Oracle' extension\n    error: Microsoft Visual C++ 14.0 or greater is required. Get it with \"Microsoft C++ Build Tools\": https://visualstudio.microsoft.com/visual-cpp-build-tools/\n    [end of output]\n\nnote: This error originates from a subprocess, and is likely not a problem with pip.\nERROR: Failed building wheel for cx-Oracle\nFailed to build cx-Oracle\nERROR: Could not build wheels for cx-Oracle, which is required to install pyproject.toml-based projects\n...\n
Last ned og installer Build Tools. F\u00f8lg gjerne guiden her: Fixed: Microsoft Visual C++ 14.0 Is Required Error Husk \u00e5 restarte VDI etter installasjon.

"},{"location":"Installasjon-p%C3%A5-VDI/dbt/#opprette-nytt-dbt-prosjekt-for-oracle-fra-scratc","title":"Opprette nytt dbt prosjekt for Oracle fra scratc","text":"

Hvis du ikke \u00f8nsker \u00e5 ta i bruk standardprosjektet, men heller kj\u00f8re dbt init er det noen ting som kan skape uforst\u00e5elige feilmeldinger:

"},{"location":"Installasjon-p%C3%A5-VDI/dbt/#quoting","title":"Quoting","text":"

Quoting av databasenavn m\u00e5 aktiveres i dbt_project.yml siden databasenenavnene til dvh-databasene er med sm\u00e5 bokstaver (eks. dwhu1). Hvis ikke dette gj\u00f8res kommer det feilmeling som sier noe slikt som approximate match

For \u00e5 skru p\u00e5 quoting m\u00e5 f\u00f8lgende settes i dbt_project.yml:

quoting:\n  database: true\n
"},{"location":"Installasjon-p%C3%A5-VDI/dbt/#hemmeligheter-ved-kjring-fra-utviklerimage","title":"Hemmeligheter ved kj\u00f8ring fra utviklerimage","text":"

Av sikkerhetshensyn anbefaler vi og oracle \u00e5 bruke milj\u00f8variabler for \u00e5 holde p\u00e5 hemmeligheter. Vi har derfor laget et script og profiles.yml som kan ligge i dbt-prosjektet.

Scriptet kan lastes ned fra navikt/dvh_template/dbt/setup_db_user.ps1.

profiles.yml skal opprettes i p\u00e5 toppniv\u00e5 i dbt-prosjektmappen, eksempel navikt/dvh_template/dbt/profiles.yml Merk at navn p\u00e5 profil er profilnavnet det henvises til i dbt_project.yml

<navn p\u00e5 profil>:\n  target: \"{{env_var('DBT_DB_TARGET')}}\"\n ...\n

N\u00e5r profilen er p\u00e5 plass i prosjektmappen kan du teste at dbt fungerer.

"},{"location":"Installasjon-p%C3%A5-VDI/dbt/#teste-dbt-installasjonen","title":"Teste dbt installasjonen","text":"

Etter at dbt er p\u00e5 plass kan du verifisere at dbt fungerer ved \u00e5 kj\u00f8re .\\setup_db_user.ps1 etterfulgt av dbt debug fra prosjektmappen. Er det et nytt prosjekt m\u00e5 du opprette profiles.yml f\u00f8rst.

.\\setup_db_user.ps1 m\u00e5 kj\u00f8res hver gang en starter en ny terminal eller \u00f8nsker \u00e5 bytte target (db). Scriptet vill midlertidlig opprette milj\u00f8variablene i terminal-sesjonen for target, brukernavn, passord, schema og peke dbt mot profiles.yml i prosjektmappen.

Success

$ .\\setup_db_user.ps1\nTarget db: U <eventuelt Q,R eller P>\nSchema: \n\ncmdlet Get-Credential at command pipeline position 1\nSupply values for the following parameters:\nCredential\n\n$ dbt debug\n09:15:08  Running with dbt=1.1.1\ndbt version: 1.1.1\npython version: 3.8.10\npython path: c:\\users\\****\\appdata\\local\\programs\\python\\python38\\python.exe      \nos info: Windows-10-10.0.19044-SP0\nUsing profiles.yml file at C:\\Users\\****\\git\\dvh-sykefravar-dmx\\profiles.yml\nUsing dbt_project.yml file at C:\\Users\\****\\git\\dvh-sykefravar-dmx\\dbt_project.yml\n\n09:15:08  oracle adapter: Running in cx mode\nConfiguration:\n  profiles.yml file [OK found and valid]   \n  dbt_project.yml file [OK found and valid]\n\nRequired dependencies:\n- git [OK found]\n\nConnection:\n  user: ****\n  database: dwhu1\n  schema: ****\n  protocol: tcp\n  host: dm07-scan.adeo.no\n  port: 1521\n  tns_name: None\n  service: dwhu1\n  connection_string: None\n  shardingkey: []\n  supershardingkey: []\n  cclass: None\n  purity: None\n  Connection test: [OK connection ok]\n\nAll checks passed!\n

DBT er n\u00e5 klart til bruk.

Error

Connection test: [ERROR]\n\n2 checks failed:\nError from git --help: Could not find command, ensure it is in the user's PATH and that the user has permissions to run it: \"git\"\n\ndbt was unable to connect to the specified database.\nThe database returned the following error:\n\n  >Database Error\n  DPI-1047: Cannot locate a 64-bit Oracle Client library: \"failed to get message for Windows Error 126\". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help\n\nCheck your database credentials and try again. For more information, visit:\nhttps://docs.getdbt.com/docs/configure-your-profile\n

Oracle client library er mest sannsynlig ikke installert.

"},{"location":"Installasjon-p%C3%A5-VDI/git/","title":"Git","text":"

F\u00f8lg guiden p\u00e5 confluence og legg til milj\u00f8variabler der det kreves. Pass p\u00e5 \u00e5 f\u00f8lge denne guiden til punkt og prikke. Mange problemer har kommet av at noen punkter her er avglemt.

"},{"location":"Installasjon-p%C3%A5-VDI/installere/","title":"Installere dbt-oracle p\u00e5 VDI","text":""},{"location":"Installasjon-p%C3%A5-VDI/installere/#forutsetninger","title":"Forutsetninger","text":"

For \u00e5 kunne utvikle dbt mot oracle m\u00e5 man ha tilgang til utviklerimage som er et VDI som kj\u00f8rer i i NAV datahall. Dette er for \u00e5 kunne f\u00e5 kontakt med Oracle databaser. Du m\u00e5 ogs\u00e5 har f\u00e5tt en eller felere databasebrukere og det er nyttig \u00e5 kunne koble seg opp mot databasene med SQL Developer. Se f\u00f8lgende lenker:

"},{"location":"Installasjon-p%C3%A5-VDI/installere/#installasjon-av-dbt-oracle","title":"Installasjon av dbt-oracle","text":"

For \u00e5 installere dbt-core for Oracle m\u00e5 du installere f\u00f8lgende:

  1. Python 3.11.x
  2. PIP og oppsett av dbt-milj\u00f8
  3. Git / GitHub Desktop
  4. dbt
"},{"location":"Installasjon-p%C3%A5-VDI/installere/#anbefalinger","title":"Anbefalinger","text":"

For en god utvikleropplevelse anbefaler vi deg \u00e5 ha f\u00f8lgende installert:

"},{"location":"Installasjon-p%C3%A5-VDI/miljovariabler/","title":"Legge til milj\u00f8variabler","text":"
  1. S\u00f8k etter milj\u00f8variabler
  2. Klikk p\u00e5: Rediger milj\u00f8bariabler for kontoen din
  1. Trykk p\u00e5 Ny...
  2. Gi variabelen et navn i Variabelnavn.
  3. Skriv inn path til programmet i Variabelverdi
  4. Trykk OK
  1. Marker Path variabelen
  2. Trykk Rediger...
  1. Trykk Ny
  2. Skriv inn navnet p\u00e5 variabelen du opprettet med syntaksen %<variabelnavn>% eks: %PIP%
  3. Trykk OK
  1. Trykk OK

Note

Husk at du m\u00e5 lukke cmd (ledetekst) og \u00e5pne p\u00e5 nytt for at endringen skal tre i kraft.

"},{"location":"Installasjon-p%C3%A5-VDI/oracle-client-library/","title":"Oracle client library","text":"

Note

Dette steget utg\u00e5r hvis du bruker thin mode (tynnklient som ikke trenger klientbiblioteket. Introdusert i dbt-oracle 1.1.1). Det anbefales \u00e5 bruke thin mode, da kj\u00f8ring av kode g\u00e5r en del raskere.

Dette finnes p\u00e5 fellesdisken og mappen programvare\\oracle\\ og kan kopieres lokalt. Det er er instantclient-basiclite-windows som benyttes.

Oppdater PATH milj\u00f8variabelen med path til oracle client library. Eksmpel:

C:\\data\\instantclient-basiclite-windows\\instantclient_19_11\n

Note

Se legg til milj\u00f8variabler hvis du ikke vet hvordan du oppdatere PATH.

"},{"location":"Installasjon-p%C3%A5-VDI/pip-og-oppsett/","title":"PIP og og tilgang til PyPI","text":"
pip --version\n
"},{"location":"Installasjon-p%C3%A5-VDI/pip-og-oppsett/#feilsk-sjekk-om-du-har-pip","title":"Feils\u00f8k: Sjekk om du har PIP","text":"

Har du installert python, s\u00e5 har du nesten sikkert ogs\u00e5 pip. Men dersom overst\u00e5ende feiler, kj\u00f8r pip --version for \u00e5 se om pip er tilgjengelig:

pip --version\n

Success

pip --version\n\npip 21.1.1 from c:\\users\\*****\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pip (python 3.8)\n

Fortsett til Git / GitHub Desktop

Failure

pip --version\n\n'pip' is not recognized as an internal or external command, operable program or batch file.\n

Kj\u00f8r py -3 -m ensurepip for \u00e5 se om pip allerede eksisterer.

Looking in links: c:\\Users\\****\\AppData\\Local\\Temp\\tmp4r6s0n91\nRequirement already satisfied: setuptools in c:\\users\\****\\appdata\\local\\programs\\python\\pythonXX\\lib\\site-packages (58.1.0)\nRequirement already satisfied: pip in c:\\users\\****\\appdata\\local\\programs\\python\\pythonXX\\lib\\site-packages (21.2.4)\n

I dette tilfelle m\u00e5 milj\u00f8variabelen PATH oppdateres. Bruk gjerne Fil utforsker for \u00e5 finne riktig path men normalt ligger PIP under:

c:\\users\\<brukernavn>\\appdata\\local\\programs\\python\\pythonXX\\scripts\n

Info

Se legg til milj\u00f8variabler hvis du ikke vet hvordan du oppdatere PATH.

Husk at du m\u00e5 lukke og \u00e5pne cmd (ledetekst) etter path variabel er lagt inn. Du kan n\u00e5 verifisere at pip er tilgjengelig ved \u00e5 kj\u00f8re pip --version.

"},{"location":"Installasjon-p%C3%A5-VDI/python/","title":"Python","text":"

Sjekk om Python er installert med py --version. dbt-versjon 1.4 og senere st\u00f8tter Python-versjon 3.11, for en tidligere dbt-versjon m\u00e5 Python-versjon v\u00e6re >= 3.8 og < 3.11.

Last eventuelt ned python 3.11.x og installer ved \u00e5 f\u00f8lge installsjonsveiviseren.

G\u00e5 til Windows \"Ledetekst\"/\"Command prompt\" og skriv f\u00f8lgende.

py --version\n

Hvis py ikke fungerer, kan det hende at det heter python:

python --version\n

Success

$ py --version\n\nPython 3.8.10\n

Fortsett til PIP

Failure

$ py --version\n\nPython 3.6.4\n
For gammel version av Python

Last ned Python

Failure

$ py --version\n\npython is not recognized as an internal or external command, operable program, or batch file\n

Python er ikke installert

Last ned Python

"},{"location":"Installasjon-p%C3%A5-VDI/sqlfluff/","title":"SQLFluff","text":"

SQLFluff er en linter som hjelper oss med \u00e5 formattere SQL-koden p\u00e5 en fornuftig m\u00e5te.

"},{"location":"Installasjon-p%C3%A5-VDI/sqlfluff/#installering-av-sqlfluff","title":"Installering av SQLFluff","text":"
pip install sqlfluff sqlfluff-templater-dbt\n
"},{"location":"Installasjon-p%C3%A5-VDI/vscode/","title":"Visual Studio Code","text":"

Bruk https://code.visualstudio.com/download, velg Windows versjonen. Last ned, pakk ut og start programmet code. F\u00f8lg instruksjonene ved innstalleringen.

"},{"location":"Installasjon-p%C3%A5-VDI/vscode/#anbefalte-extensions","title":"Anbefalte extensions","text":""},{"location":"arkitektur/materialisering/","title":"Materialiseringsstrategier","text":"

Hva er materialiseringer i dbt?. dbt-oracle st\u00f8tter alle former for materialisering.

Generelt er det en god ide \u00e5 f\u00f8lge Best practices for materializations fra dbt labs.

Det er likevel noen avvik: 1. Staging modeller b\u00f8r hovedsakelig v\u00e6re views. - Men pseduonymisering skal skje s\u00e5 tidlig som mulig, og derfor er det n\u00f8dvendig at kilder som inneholder personn\u00f8kler blir lastet inkrementelt. Det er ofte et krav om at r\u00e5data blir slettet etter 6 m\u00e5neder. 2. Intermediate ved kompleks logikk. Kj\u00f8r views n\u00e5r du kan. N\u00e5r views g\u00e5r for tregt, har du tre valg: 1. Kj\u00f8re table materialiseringer. tabeller blir droppet, purget og rekj\u00f8rt med alt innhold fra sp\u00f8rringen i modellfilen. Ikke lurt ved ved st\u00f8rre mengder data, b\u00e5de ytelsesmessig og lagring i flere lag. 2. Incrememental. Tabellen bevares og nye endrede rader blir lagt til med merge. 3. Delta last med table models ... trenger POC 3. Marts skal v\u00e6re stabil. Det er her alle sp\u00f8rringer fra konsumenter kj\u00f8res, og det er viktig for basen \u00e5 opparbeide statistikk p\u00e5 sp\u00f8rringer som kj\u00f8rer ofte. - materialized_view er for MVP og sm\u00e5 datamengder, jher er ikke ytelse noe problem. - For l\u00f8sninger med st\u00f8rre datamenger, kj\u00f8r inkrementell last med partisjonering og indeksering.

"},{"location":"arkitektur/style_guide/","title":"DBT Stil Guide","text":"

forket fra https://github.com/dbt-labs/corp/blob/main/dbt_style_guide.md

"},{"location":"arkitektur/style_guide/#modell-naming","title":"Modell Naming","text":"

V\u00e5r modellere organiserers inn i tre hovedgrupper: staging, marts, base/intermediate. See f\u00f8lgnede diskusjon. The navngiving blir som f\u00f8lger:

\u251c\u2500\u2500 dbt_project.yml\n\u2514\u2500\u2500 models\n    \u251c\u2500\u2500 marts\n    |   \u2514\u2500\u2500 core\n    |       \u251c\u2500\u2500 mellomlager\n    |       |   \u251c\u2500\u2500 mellomlager.yml\n    |       |   \u251c\u2500\u2500 posteringer__unionisert.sql\n    |       |   \u2514\u2500\u2500 posteringer__gruppert.sql\n    |       \u251c\u2500\u2500 core.docs\n    |       \u251c\u2500\u2500 dim_artskonti\n    |           \u251c\u2500\u2500 dim_artskonti.yml\n    |           \u2514\u2500\u2500 dim_artskonti.sql\n    |       \u251c\u2500\u2500 dim_konstnadssteder\n    |           \u251c\u2500\u2500 dim_konstnadssteder.yml\n    |           \u2514\u2500\u2500 dim_konstnadssteder.sql\n    |       \u2514\u2500\u2500 fak_hovedbok_posteringer\n    |           \u251c\u2500\u2500 fak_hovedbok_posteringer.yml\n    |           \u2514\u2500\u2500 fak_hovedbok_posteringer.sql\n    \u2514\u2500\u2500 staging\n        \u2514\u2500\u2500 oebs\n            \u251c\u2500\u2500 base\n            |   \u251c\u2500\u2500 base.yml\n            |   \u2514\u2500\u2500 base__oebs_kontoplan.sql\n            \u251c\u2500\u2500 src_oebs.yml\n            \u251c\u2500\u2500 src_oebs.docs\n            \u251c\u2500\u2500 stg_oebs__posteringerslinjer\n            |   \u251c\u2500\u2500 stg_oebs__posteringerslinjer.yml\n            |   \u2514\u2500\u2500 stg_oebs__posteringerslinjer.sql\n            \u251c\u2500\u2500 stg_oebs__budjsett_balanser\n            |   \u251c\u2500\u2500 stg_oebs__budjsett_balanser.yml\n            |   \u2514\u2500\u2500 stg_oebs__budjsett_balanser.sql\n
- All objekter oppgis p\u00e5 flertallsform, slik som: stg_oebs__hovedbok_posteringslinjer, stg_oebs__artskonti, etc. - Basetabeller prefikses med base__, slik som: base__<source>_<object> - Mellomlagringstabeller skal avsluttes med et fortidsverb som indikerer hvilken handling som er gjort p\u00e5 objektet, slik som: hovedbok_posteringslinjer__filtrert_budsjett - Datatorg, eller marter, er fordelt mellom faktaer (uforandelig, verb) og dimensjoner (foranderlig, subjekt) og prefikses med fak_ og dim_, henholdvis. - Staged strukter inneholder alle kolonner fra r\u00e5-tabellen og utvides med avledede kolonner, for \u00e5 angi naturlig n\u00f8kler, hashed n\u00f8kler, omd\u00f8ping av kolonnenavn, etc.

"},{"location":"arkitektur/style_guide/#model-konfigurasjon","title":"Model konfigurasjon","text":"

{{\n  config(\n    materialized = 'table',\n    sort = 'id',\n    dist = 'id'\n  )\n}}\n
- Marter b\u00f8r alltid configureres som tabeller - med mindre det er sv\u00e6rt gode grunner til \u00e5 ikke gj\u00f8re det.

"},{"location":"arkitektur/style_guide/#dbt-konvensjoner","title":"DBT konvensjoner","text":""},{"location":"arkitektur/style_guide/#tester","title":"Tester","text":""},{"location":"arkitektur/style_guide/#navngivining-og-felt-konvensjoner","title":"Navngivining og felt konvensjoner","text":""},{"location":"arkitektur/style_guide/#cteer","title":"CTEer","text":"

For mer informasjon om hvorfor vi bruker CTEer, see f\u00f8lgende post. Kortversjonen er at det hjelper oss \u00e5 samle kildene \u00f8verst, gj\u00f8re enkle transformasjoner og joiner i midten og se resultatet nederst. Oracle skal st\u00f8tte passthrough slik at masse wither p\u00e5 rad ikke p\u00e5virker ytelsen.

WITH\n\nhendelser AS (\n\n    ...\n\n),\n\n-- CTE comments go here\nfiltrerte_hendelser AS (\n\n    ...\n\n),\n\nendelig AS (\n\n    SELECT * FROM filtrerte_hendelser\n\n),\n\n\nSELECT * FROM endelig\n
"},{"location":"arkitektur/style_guide/#sql-stil-guide","title":"SQL stil guide","text":""},{"location":"arkitektur/style_guide/#eksempel-sql","title":"Eksempel SQL","text":"
WITH\n\nmin_data AS (\n\n    SELECT * FROM {{ ref('min_data') }}\n\n),\n\nen_cte AS (\n\n    SELECT * FROM {{ ref('en_cte') }}\n\n),\n\nen_cte_agg AS (\n\n    SELECT\n        id,\n        SUM(felt_4) AS total_felt_4,\n        MAX(felt_5) AS max_felt_5\n\n    FROM en_cte\n    GROUP BY 1\n\n),\n\nendelig AS (\n\n    SELECT [DISITNCT]\n        min_data.felt_1,\n        min_data.felt_2,\n        min_data.felt_3,\n\n        -- Bruk linjeshift for visuelt separere kalkulasjoner inn i blokker.\n        CASE\n            WHEN min_data.kansellerings_dato IS NULL\n                AND min_data.utgangs_dato is not null\n                THEN utgangsdato_date\n            WHEN my_data.kansellerings_dato IS NULL\n                THEN my_data.start_dato + 7\n            ELSE my_data.kansellerings_date\n        END AS kansellerings_dato,\n\n        en_cte_agg.total_felt_4,\n        en_cte_agg.max_felt_5\n\n    FROM min_data\n    LEFT JOIN en_cte_agg  \n        ON min_data.id = en_cte_agg.id\n    WHERE min_data.felt_1 = 'abc'\n        AND (\n            min_data.felt_2 = 'def' OR\n            min_data.felt_2 = 'ghi'\n        )\n    HAVING COUNT(*) > 1\n\n)\n\nSELECT * FROM final\n
"},{"location":"arkitektur/style_guide/#yaml-stil-guide","title":"YAML stil guide","text":""},{"location":"arkitektur/style_guide/#eksample-yaml","title":"Eksample YAML","text":"
version: 2\n\nmodels:\n  - name: hendelser\n    columns:\n      - name: pk_hendelser\n        description: Dette er n prim\u00e6rn\u00f8kkel\n        tests:\n          - unique\n          - not_null\n\n      - name: hendelse_ts \n        description: \"N\u00e5r hendelse skjedde i UTC (eg. 2018-01-01 12:00:00)\"\n        tests:\n          - not_null\n\n      - name: fk_brukere\n        description: Brukeren som st\u00e5 for hendelsen \n        tests:\n          - not_null\n          - relationships:\n              to: ref('brukere')\n              field: pk_brukere\n
"},{"location":"arkitektur/style_guide/#jinja-stil-guide","title":"Jinja stil guide","text":""},{"location":"arkitektur/style_guide/#farger-i-lineage","title":"Farger i lineage","text":"

I lineagen f\u00e5r source-blobber en lys gr\u00f8nn farge, mens alt annet blir lys bl\u00e5. I .yml-filene kan dette endres med node_color-attributten under +docs til en modell eller en mappe. For \u00e5 skille enklere mellom staging, intermediate og marts har vi valgt f\u00f8lgende som en standard, men dette kan du endre som du vil:

# i dbt_project.yml\nmodels:\n  ...\n    staging:\n      +docs:\n        node_color: '#054710' # m\u00f8rk gr\u00f8nn farge\n\n    intermediate:\n      +docs:\n        node_color: '#0E4870' # m\u00f8rk bl\u00e5 farge\n\n    marts: # standard dbt-lysebl\u00e5-farge\n    ...\n

node_color-attributten st\u00f8tter b\u00e5de fargenavn (red) og hex-koder med anf\u00f8rselstegn (\"#cd7f32\"). Se https://docs.getdbt.com/reference/resource-configs/docs for mer informasjon.

"},{"location":"dokumentasjon/dokumentasjon/","title":"Dokumentasjon","text":""},{"location":"dokumentasjon/dokumentasjon/#tabelldokumentasjon","title":"Tabelldokumentasjon","text":"

Tabellene konfigureres og dokumenteres i yml filene i hver mappe i prosjektet. Kommentarer kan settes p\u00e5 b\u00e5de tabellniv\u00e5 og kolonneniv\u00e5. Les mer her.

"},{"location":"dokumentasjon/dokumentasjon/#persist-docs","title":"Persist docs","text":"

dbt-oracle har st\u00f8tte for \u00e5 skrive kommentarer til databasen. Som andre konfig, kan det settes p\u00e5 prosjektniv\u00e5, mappeniv\u00e5 eller modellniv\u00e5. For \u00e5 sette det p\u00e5 prosjektniv\u00e5, legg til f\u00f8lgende i dbt_project.yml

models:\n  +persist_docs:\n    relation: true\n    columns: true\n

En ting \u00e5 v\u00e6re oppmerksom p\u00e5 n\u00e5r persist_docs er aktivert er at kolonnenavn i modellen m\u00e5 v\u00e6re det samme som definert i yml filen.

ORA-00904

ORA-00904: \"KOLONNE\": invalid identifier\n
SELECT\n  kolonne\nFROM ...\n
- name: kolonne_navn\n  description: ...\n

Her har Oracle fors\u00f8kt \u00e5 skrive kommentar til en kolonne som ikke eksisterer. Sammenlign modell og yml fil og sjekk at navnet p\u00e5 kolonnen er lik.

"},{"location":"dokumentasjon/dokumentasjon/#overskrive-overview","title":"Overskrive overview","text":"

Komponentdokumentasjonen kan integreres i dbt dokumentasjonen. I dbt/models folderen m\u00e5 det opprettes en overview.md fil. Bruk gjerne overview.md som mal

"},{"location":"dokumentasjon/dokumentasjon/#deployere-dokumentasjon","title":"Deployere dokumentasjon","text":"

Hver gang kommandoen dbt docs kj\u00f8res, genereres det tre filer i target mappa under dbt prosjektmappa: index.hml, catalog.json og manifest.json. Disse filene er statiske og inneholder alt som trengs for \u00e5 publisere en versjon av dokumentasjonen p\u00e5 en webserver.

Github pages har slik st\u00f8tte. Publsiering til github pages kan gj\u00f8res p\u00e5 flere m\u00e5ter, men kanskje enklest er det \u00e5 bruke en github action:

# Simple workflow for dbt docs content to GitHub Pages\nname: Deploy dbt docs to GitHub Pages\n\non:\n  push:\n    branches: [\"master\"]\n    paths:\n      - docs/**\n\n  workflow_dispatch:\n\n\npermissions:\n  contents: read\n  pages: write\n  id-token: write\n\n# Allow one concurrent deployment\nconcurrency:\n  group: \"pages\"\n  cancel-in-progress: true\n\njobs:\n  deploy:\n    environment:\n      name: github-pages\n      url: ${{ steps.deployment.outputs.page_url }}\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v3\n      - name: Setup Pages\n        uses: actions/configure-pages@v2\n      - name: Upload artifact\n        uses: actions/upload-pages-artifact@v1\n        with:\n          path: 'docs'\n      - name: Deploy to GitHub Pages\n        id: deployment\n        uses: actions/deploy-pages@v1\n
  1. Importer overst\u00e5ende github action i .workflow
  2. Kj\u00f8r kommandoen dbt docs generate
  3. Lag en docs mappe p\u00e5 roten av repoet, hvis det ikke allerede finnes.
  4. Kopier over filene index.hml, catalog.json og manifest.json fra target mappen til docs mappen.
  5. Commit og push til main branchen.
  6. Docen blir automatisk publisert av github action, til url spesifisert av jobben.
"},{"location":"dokumentasjon/overview/","title":"Overview","text":"

{% docs overview %}

"},{"location":"dokumentasjon/overview/#xxx-komponenten","title":"XXX - komponenten","text":""},{"location":"dokumentasjon/overview/#formal","title":"Form\u00e5l","text":"

Overordnet beskrivelse av form\u00e5l med l\u00f8sningen

"},{"location":"dokumentasjon/overview/#komponentbeskrivelse","title":"Komponentbeskrivelse","text":""},{"location":"dokumentasjon/overview/#struktur-pa-repo","title":"Struktur p\u00e5 repo","text":"

Lenke til dokumentasjon p\u00e5 confluence

Vi har f\u00f8lgende mapper: - db (medf\u00f8lgende readme) - install (her ligger ddl filer per tabell/view. Ogs\u00e5 dcl-filer som gir grants) - patch (hvert script har jira-kode som prefiks og kort forklaring/tabellnavn). N\u00e5r man endrer en tabell her m\u00e5 man ogs\u00e5 endre den i install-filen) - utils (kanskje, hvis man trenger det) - dbt - dbt prosjektet. dette er stien der man kj\u00f8rer dbt kommandoer.

"},{"location":"dokumentasjon/overview/#overordnet-design","title":"Overordnet design","text":""},{"location":"dokumentasjon/overview/#dataflyt-diagram","title":"Dataflyt-diagram","text":"

Dataflyten finnes ved \u00e5 klikke p\u00e5 det bl\u00e5 ikonet nederst til h\u00f8yre p\u00e5 siden

# DAG task kilde m\u00e5l kommentar"},{"location":"dokumentasjon/overview/#databasebeskrivelse","title":"Databasebeskrivelse","text":"

En oversikt over de viktigste tabellene

Tabell/Views Beskrivelse tabell1 besk tabell2 besk"},{"location":"dokumentasjon/overview/#databasescript","title":"Databasescript","text":"

Referanser til hvor databasescriptene befinner seg

"},{"location":"dokumentasjon/overview/#drift","title":"Drift","text":""},{"location":"dokumentasjon/overview/#workflows-og-kjretidspunkt","title":"Workflows og kj\u00f8retidspunkt","text":"

Inneholder informasjon om viktige punkter for kj\u00f8retider

"},{"location":"dokumentasjon/overview/#tilgangsstyring","title":"Tilgangsstyring","text":"

Er det noen spesielle rettigheter som kreves for denne komponenten?

"},{"location":"dokumentasjon/overview/#overvaking-og-datakvalitet","title":"Overv\u00e5king og datakvalitet","text":""},{"location":"dokumentasjon/overview/#datakvalitet","title":"Datakvalitet","text":"

Det kj\u00f8res datakvalitetsm\u00e5linger for disse tabellene

"},{"location":"dokumentasjon/overview/#overvaking","title":"Overv\u00e5king","text":"

F\u00f8lgende Sitescope-monitorer kj\u00f8res for denne komponenten.

"},{"location":"dokumentasjon/overview/#sikkerhet-og-personvern","title":"Sikkerhet og personvern","text":"

Inneholder detaljer rundt f.eks tilgang

Det er ikke utarbeidet PVK for denne komponenten.

H\u00e5ndtering av kode 6 og 7: Under arbeid

"},{"location":"dokumentasjon/overview/#backlog","title":"Backlog","text":"

Lenke til jira-oversikt?

"},{"location":"dokumentasjon/overview/#dbt-docs-brukerguide","title":"dbt docs - brukerguide","text":""},{"location":"dokumentasjon/overview/#navigasjon","title":"Navigasjon","text":"

Du kan bruke navigasjonsfanene Project og Database p\u00e5 venstre side av vinduet for \u00e5 utforske modellene i komponenten.

"},{"location":"dokumentasjon/overview/#prosjektfane","title":"Prosjektfane","text":"

Prosjekt-fanen speiler katalogstrukturen til dbt-prosjektet ditt. I denne fanen kan du se alle modeller definert i dbt-prosjektet ditt, samt modeller importert fra dbt-pakker.

"},{"location":"dokumentasjon/overview/#database-fanen","title":"Database-fanen","text":"

Fanen Database viser ogs\u00e5 modellene dine, men i et format som ser mer ut som en databaseutforsker. Denne utsikten viser relasjoner (tabeller og visninger) gruppert i databaseskjemaer. Merk at ephemeral modeller ikke vises i dette grensesnittet, da de ikke finnes i databasen.

"},{"location":"dokumentasjon/overview/#grafutforskning","title":"Grafutforskning","text":"

Du kan klikke p\u00e5 det bl\u00e5 ikonet nederst til h\u00f8yre p\u00e5 siden for \u00e5 se lineage til modellene dine.

P\u00e5 modellsidene vil du se de n\u00e6rmeste foreldrene og barna til modellen du utforsker. Ved \u00e5 klikke p\u00e5 Expand. knappen \u00f8verst til h\u00f8yre i denne avstamningsruten, vil du kunne se alle modellene som brukes til \u00e5 bygge, eller er bygget fra, modellen du utforsker.

N\u00e5r den er utvidet, vil du kunne bruke --select og --exclude modellvalgsyntaks for \u00e5 filtrere modeller i grafen. For mer informasjon om modellvalg, sjekk ut dbt docs.

Merk at du ogs\u00e5 kan h\u00f8yreklikke p\u00e5 modeller for \u00e5 filtrere og utforske grafen interaktivt.

"},{"location":"dokumentasjon/overview/#mer-info","title":"Mer info","text":"

{% enddocs %}

"},{"location":"feilsoking/feilsoking/","title":"Feils\u00f8king","text":"

Samleside for vanlige feilsistuasjoner som kan oppst\u00e5 med dbt og Oracle i NAV

"},{"location":"feilsoking/feilsoking/#incremental","title":"Incremental","text":""},{"location":"feilsoking/feilsoking/#ora-00955-det-finnes-allerede-et-objekt-med-det-navnet","title":"ORA-00955: det finnes allerede et objekt med det navnet","text":"

???

"},{"location":"feilsoking/feilsoking/#ora-00904-kolonne-invalid-identifier","title":"ORA-00904: \"KOLONNE\": invalid identifier","text":"

Dersom persist_docs er aktivert i dbt_project.yml, ta en titt p\u00e5 siden om Dokumentasjon.

"},{"location":"feilsoking/feilsoking/#kobling-mot-oracle-database","title":"Kobling mot oracle database","text":""},{"location":"feilsoking/feilsoking/#dpy-2029-https_proxy-requires-use-of-the-tcps-protocol","title":"DPY-2029: https_proxy requires use of the tcps protocol","text":"

Bytte fra thin mode til cx mode. I outputen du f\u00e5r i terminalen, sjekk hvilken mode du kj\u00f8rer i. Kj\u00f8rer du i thin mode endr det til cx mode. Dette gj\u00f8res ved \u00e5 bruke Oracle Instant Client. Sett path til Oracle Instant Client i milj\u00f8veriabler og slett ORA_PYTHON_DRIVER_TYPE=thin fra milj\u00f8variabler.

"},{"location":"prosjekter/dvh-sykefravar-dmx/","title":"dvh-sykefravar-dmx","text":"

Eies av Team Sykefrav\u00e6r

"},{"location":"prosjekter/dvh-sykefravar-dmx/#formal","title":"Form\u00e5l","text":"

Analysetorg brukt til syfo (sykefrav\u00e6rsoppfoling)

"},{"location":"prosjekter/dvh-sykefravar-dmx/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #dv-team-sykefrav\u00e6r

"},{"location":"prosjekter/dvh_arb_cv/","title":"dvh_arb_cv","text":"

Eies av A-Team

"},{"location":"prosjekter/dvh_arb_cv/#formal","title":"Form\u00e5l","text":"

Siste versjon av CV-elementer og jobb\u00f8nsker per person registrert arbeidss\u00f8ker NAV.

"},{"location":"prosjekter/dvh_arb_cv/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #dv-a-team

"},{"location":"prosjekter/dvh_arb_permittering/","title":"dvh_arb_permittering","text":"

Eies av A-Team

"},{"location":"prosjekter/dvh_arb_permittering/#formal","title":"Form\u00e5l","text":"

NAV har behov for \u00e5 samle statistikk for oversikt over permitterte arbeidss\u00f8kere og forh\u00e5ndsmelding om permittering og masseoppsigelser.

Arbeidsgivere som vurderer \u00e5 g\u00e5 til masseoppsigelser eller permitteringer, gir melding om dette til NAV. Fra 2020 blir disse meldingene sendt inn elektronisk til NAV, og registreres i l\u00f8sningen Permittering.

Dekker i f\u00f8rste omgang forh\u00e5ndsmelding om permittering, dvs n\u00e5r virksomheter permittere over 10 personer s\u00e5 skal de melde til NAV p\u00e5 forh\u00e5nd.

"},{"location":"prosjekter/dvh_arb_permittering/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #dv-a-team

"},{"location":"prosjekter/dvh_arb_person/","title":"dvh_arb_person","text":"

Eies av A-Team

"},{"location":"prosjekter/dvh_arb_person/#formal","title":"Form\u00e5l","text":"

Arbeidsmakedsstatistikken.

"},{"location":"prosjekter/dvh_arb_person/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #dv-a-team

"},{"location":"prosjekter/dvh_arb_styrke_ssb/","title":"dvh_arb_styrke_ssb","text":"

Eies av A-Team

"},{"location":"prosjekter/dvh_arb_styrke_ssb/#formal","title":"Form\u00e5l","text":"

Komponenten leser data inn fra SSB i to forskjellige l\u00f8p:

"},{"location":"prosjekter/dvh_arb_styrke_ssb/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #dv-a-team

"},{"location":"prosjekter/dvh_arb_tiltak/","title":"dvh_arb_tiltak","text":"

Eies av Team Oppf\u00f8lging Eies av Team Oppf\u00f8lging)

"},{"location":"prosjekter/dvh_arb_tiltak/#formal","title":"Form\u00e5l","text":"

Brukes i Tiltaks- og oppf\u00f8lgingsstatistikken.

"},{"location":"prosjekter/dvh_arb_tiltak/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #dv-oppf\u00f8lging

"},{"location":"prosjekter/nystol/vdl-regnskapsdata/","title":"vdl-regnskapsdata","text":"

Eies av Team-VDL

"},{"location":"prosjekter/nystol/vdl-regnskapsdata/#formal","title":"Form\u00e5l","text":"

Analysedata av hovedbok

"},{"location":"prosjekter/nystol/vdl-regnskapsdata/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #virksomhetsdatalaget

"}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Introduksjon til dbt","text":"

dbt (data build tool) er et SQL basert transformasjonsvekt\u00f8y som lar deg modularisere og skrive testbar SQL kode. dbt s\u00f8rger for at SQLene blir kj\u00f8rt i riktig rekkef\u00f8lge slik at sluttproduktet blir oppdatert korrekt.

En SQL fil i dbt blir kalt en modell i dbt. Modeller kan materialiseres p\u00e5 ulike m\u00e5ter. Som view, tabell eller rett og slett en SQL snutt som kan gjenbrukes i flere modeller etter DRY-prinsippet.

dbt er IKKE et extract-load verkt\u00f8y. Det betyr at dataene som skal transformeres allerede m\u00e5 ligge i databasen dbt er koblet til. dbt krever alts\u00e5 at data er lastet p\u00e5 forh\u00e5nd, med feks en pythonjobb eller kafkakonsument. Dataene trenger ikke n\u00f8dvendigvis ligge i samme komponentskjema eller samme BigQuery prosjekt. S\u00e5 lenge dataene er tilgjengelig p\u00e5 samme database og dbt service brukeren har tilgang til \u00e5 lese dataene er du good to go.

dbt kommer b\u00e5de i som open source i form av dbt-core og i en egen cloud versjon, dbt cloud. Cloud versjonen st\u00f8tter kun skydatabaser som feks. BigQuery og Snowflake. dbt Cloud kan derfor ikke brukes mot Oracle onprem databasen til datavarehus. For datasett som befinner seg p\u00e5 datamarkedsplassen i BigQuery, kan dbt Cloud v\u00e6re en mulighet.

For Oracle on-prem benytter vi dbt-oracle som er en python pakke som baserer seg p\u00e5 dbt-core. Oracle er ikke offisielt st\u00f8ttet av dbt, men Oracle har tatt ansvar for community connectoren og og blir aktiv vedlikeholdt og fortl\u00f8pende oppdatert til siste versjon av dbt-core. For \u00e5 n\u00e5 on-prem Oracle m\u00e5 vi som kjent benytte utviklerimage. Denne guiden tar for seg installasjon og oppsett av dbt-oracle p\u00e5 vdi utvikler gjennom Visual Studio Code.

"},{"location":"#lenker","title":"Lenker","text":"

F\u00f8r du g\u00e5r gjennom detaljene p\u00e5 hvordan dbt b\u00f8r settes opp er det lurt \u00e5 bli kjent med hvordan dbt fungerer. Nedenfor er det et knippe nyttige lenker som hjelper deg med \u00e5 komme igang og l\u00e6re de viktigste kommandoene og funksjonene i dbt.

"},{"location":"#kurs-dbt-fundamentals","title":"Kurs - dbt fundamentals","text":"

Det er sterkt anbefalt \u00e5 starte med \u00e5 g\u00e5 gjennom fundamentals kurset til dbt labs. Dette kurset bruker dbt cloud, men mesteparten av innholdet kan overf\u00f8res til dbt-core. Bruk gjerne GCP dev milj\u00f8et til teamet for \u00e5 sette opp testprosjektet i BigQuery, men husk p\u00e5 \u00e5 slette ressursene i etterkant

"},{"location":"#designprinsipper","title":"Designprinsipper","text":"

How to design a dbt model from scratch. Hvordan b\u00f8r du tenke n\u00e5 du designer nye modeller med dbt? Det er fort gjort \u00e5 bomme p\u00e5 f\u00f8rste fors\u00f8k, og det koster mye tid.

"},{"location":"#dimensjonsmodellering","title":"Dimensjonsmodellering","text":"

Kimball er fortsatt relevant med dbt. Building a Kimball dimensional model with dbt

"},{"location":"#bok","title":"Bok","text":"

Det er nylig (juni 2023) lansert en bok om Data Engineering with dbt. Boken inneholder instroduksjon til data engineering generelt og endelt om ulike skydatabaser i tillegg til grunnleggende bruk av dbt. Kanskje den mest interessante delen er kapittel 8 som omhandler testing med dbt.

"},{"location":"#nyttige-lenker","title":"Nyttige lenker","text":"

dbt's egne guider: Lessons

Community basert samling av lenker: awsome-dbt

"},{"location":"#hvorfor-skal-jeg-bruke-dbt-jeg-kan-jo-kjre-sql-med-python","title":"Hvorfor skal jeg bruke dbt? Jeg kan jo kj\u00f8re SQL med Python","text":"

Det er riktig. Dersom du bare skal kj\u00f8re noen enkle SQL sp\u00f8rringer er det kanskje like greit \u00e5 sette opp en Pythonjobb som kj\u00f8rer SQLen for deg. Men med en gang antall sp\u00f8rringer eller kompleksiteten p\u00e5 sp\u00f8rringene \u00f8ker vil dbt hjelpe med med \u00e5 strukturere koden og holde oversikt over rekkef\u00f8lgen. Det er ikke uvanlig at en komponent best\u00e5r av 30 eller flere SQL filer som avhenger av hverandre.

"},{"location":"Installasjon-p%C3%A5-VDI/dbt-power-user/","title":"dbt Power User","text":"

dbt Power User er en VS Code extension, og gir oss en rekke nyttige verkt\u00f8y, som f.eks.:

dbt Power User p\u00e5 GitHub

"},{"location":"Installasjon-p%C3%A5-VDI/dbt-power-user/#installasjon-og-oppsett","title":"Installasjon og oppsett","text":"

Installeres via VS Code Marketplace, f\u00f8lg installasjonsrutinene til Altimate

"},{"location":"Installasjon-p%C3%A5-VDI/dbt-power-user/#utover-standardinstallasjon-ma-flgende-hensyn-tas-for-bruk-pa-vdi-utvikler-og-mot-oracle-dvh","title":"Utover standardinstallasjon m\u00e5 f\u00f8lgende hensyn tas for bruk p\u00e5 VDI Utvikler og mot Oracle DVH:","text":"

dbt Power User krever at man setter opp milj\u00f8variabler med credentials via PowerShell, f\u00f8r VS Code startes opp i samme PowerShell-sesjon. Dette gj\u00f8re med skriptet start_vscode_dbt.ps1

F\u00f8lg denne guiden for \u00e5 sette opp Visual Studio Code med riktige milj\u00f8variable:

  1. Klon dette repoet: https://github.com/navikt/dbt-i-nav/ til en lokal mappe p\u00e5 utivklerimage/VDI

  2. Lag en snarvei p\u00e5 skrivebordet til start_vscode_dbt.ps1 som n\u00e5 ligger lokalt p\u00e5 VDI (inne i mappen du nettopp klonet) slik:

  3. H\u00f8yreklikk p\u00e5 den nye snarveien og velg Egenskaper

  4. Skriptet er generelt og krever at stien til et gyldig dbt-prosjekt settes som argument i tillegg til schemanavnet dbt skal bruke som proxy. Fyll derfor inn f\u00f8lgende tekst i M\u00e5l: powershell.exe -noexit -ExecutionPolicy Bypass -File \"C:\\sti til dbt-i-nav\\start_vscode_dbt.ps1\" c:\\sti\\til\\dbt-prosjekt\\ databaseskjemanavn og juster i forhold til stiene p\u00e5 ditt image.

  5. Kopier snarveien og endre stiene for hvert dbt prosjekt du vil sette opp

  6. Start Visual Stusdio Code ved \u00e5 dobbeltklikke p\u00e5 snarveien.

  7. Det hender skriptet oppdateres, s\u00e5 det er lurt \u00e5 hente siste kode fra github innimellom.

"},{"location":"Installasjon-p%C3%A5-VDI/dbt-power-user/#oracle-oppsett-for-preview-query","title":"Oracle oppsett for Preview query","text":"

Preview query-template m\u00e5 endres for Oracle-bruk: 1. \u00c5pne Settings ved \u00e5 trykke CTRL + , 2. S\u00f8k etter dbt.queryTemplate 3. Endre skript til select * from ({query}) where ROWNUM <= {limit}

Ref.: #dbtquerytemplate-for-oracle

"},{"location":"Installasjon-p%C3%A5-VDI/dbt-power-user/#erfaringer-feil-som-har-oppstatt-ved-bruk-av-dbt-power-user","title":"Erfaringer - feil som har oppst\u00e5tt ved bruk av dbt Power User:","text":""},{"location":"Installasjon-p%C3%A5-VDI/dbt/","title":"DBT","text":""},{"location":"Installasjon-p%C3%A5-VDI/dbt/#oppsett-av-dbt-prosjekter","title":"Oppsett av dbt prosjekter","text":"

Vi har laget et ferdig oppsett av et dbt prosjekt tilpasset NAV dvh. Enten lag et nytt repo basert p\u00e5 dvh_template. Deretter m\u00e5 dbt_template kopieres inn for \u00e5 f\u00e5 integrert dbt prosjektet.

Resten av denne siden omhandler manuelt oppsett av dbt-oracle uten virteul. F\u00f8lg denne guiden hvis du ikke \u00f8nsker automatisk oppsett i Visual Studio Code.

"},{"location":"Installasjon-p%C3%A5-VDI/dbt/#oppsett-av-sertifikater-til-pip","title":"Oppsett av sertifikater til pip","text":"

Til vanlig bruker pip sitt eget sertifikat for \u00e5 validere at vi laster ned pakker fra riktig server. Siden VDI bruker en webproxy for \u00e5 kommunisere med omverdenen vill vi f\u00e5 en feilmeling ved pip install xxx.

Error

13:42:24  Encountered an error: External connection exception occurred:\nHTTPSConnectionPool(host='hub.getdbt.com', port=443): Max retries exceeded\nwith url: /api/v1/index.json (Caused by SSLError(SSLCertVerificationError(1,\n'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get\nlocal issuer certificate (_ssl.c:1108)')))\n

For \u00e5 fikse feilen kan vi installere pakkene setuptools-scm og pip-system-certs som f\u00e5r pip til \u00e5 bruke Windows Certificate Store istedenfor.

pip install setuptools-scm pip-system-certs --trusted-host pypi.org --trusted-host  files.pythonhosted.org\n

Det finnes en offisiell oracle adapter for dbt v1.x. Gjerne start med \u00e5 ta en titt p\u00e5 denne installasjonsguiden f\u00f8rst.

"},{"location":"Installasjon-p%C3%A5-VDI/dbt/#installasjon","title":"Installasjon","text":"

dbt kan installeres sammen med oracle adapteren med kommandoen:

pip install dbt-oracle\n

Nedlasting feiler

$ pip install dbt-oracle\nWARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)'))': /simple/dbt-oracle/\n\n...\n\nCould not fetch URL https://pypi.org/simple/dbt-oracle/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/dbt-oracle/ (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)')))\n

Sjekk om du har gjort oppsett av sertifikater til pip.

Installasjon feiler

I noen tilfeller har vi opplevd at Microsoft Visual C++ mangler. Feilmeldingen kan se slik ut:

...\nBuilding wheels for collected packages: cx-Oracle\nBuilding wheel for cx-Oracle (pyproject.toml) ... error\nerror: subprocess-exited-with-error\n\n\u00d7 Building wheel for cx-Oracle (pyproject.toml) did not run successfully.\n\u2502 exit code: 1\n\u2570\u2500> [8 lines of output]\n      C:\\Users\\RA_S167159\\AppData\\Local\\Temp\\pip-build-env-lh09agh5\\overlay\\Lib\\site-packages\\setuptools\\config\\expand.py:144: UserWarning: File 'C:\\\\Users\\\\RA_S167159\\\\AppData\\\\Local\\\\Temp\\\\pip-install-ki6mcccg\\\\cx-oracle_5a1e160a6cb5498187fe05d5b5637d8c\\\\README.md' cannot be found\n        warnings.warn(f\"File {path!r} cannot be found\")\n    pip_system_certs: ERROR: could not register module: No module named 'wrapt'\n    running bdist_wheel\n    running build\n    running build_ext\n    building 'cx_Oracle' extension\n    error: Microsoft Visual C++ 14.0 or greater is required. Get it with \"Microsoft C++ Build Tools\": https://visualstudio.microsoft.com/visual-cpp-build-tools/\n    [end of output]\n\nnote: This error originates from a subprocess, and is likely not a problem with pip.\nERROR: Failed building wheel for cx-Oracle\nFailed to build cx-Oracle\nERROR: Could not build wheels for cx-Oracle, which is required to install pyproject.toml-based projects\n...\n
Last ned og installer Build Tools. F\u00f8lg gjerne guiden her: Fixed: Microsoft Visual C++ 14.0 Is Required Error Husk \u00e5 restarte VDI etter installasjon.

"},{"location":"Installasjon-p%C3%A5-VDI/dbt/#opprette-nytt-dbt-prosjekt-for-oracle-fra-scratc","title":"Opprette nytt dbt prosjekt for Oracle fra scratc","text":"

Hvis du ikke \u00f8nsker \u00e5 ta i bruk standardprosjektet, men heller kj\u00f8re dbt init er det noen ting som kan skape uforst\u00e5elige feilmeldinger:

"},{"location":"Installasjon-p%C3%A5-VDI/dbt/#quoting","title":"Quoting","text":"

Quoting av databasenavn m\u00e5 aktiveres i dbt_project.yml siden databasenenavnene til dvh-databasene er med sm\u00e5 bokstaver (eks. dwhu1). Hvis ikke dette gj\u00f8res kommer det feilmeling som sier noe slikt som approximate match

For \u00e5 skru p\u00e5 quoting m\u00e5 f\u00f8lgende settes i dbt_project.yml:

quoting:\n  database: true\n
"},{"location":"Installasjon-p%C3%A5-VDI/dbt/#hemmeligheter-ved-kjring-fra-utviklerimage","title":"Hemmeligheter ved kj\u00f8ring fra utviklerimage","text":"

Av sikkerhetshensyn anbefaler vi og oracle \u00e5 bruke milj\u00f8variabler for \u00e5 holde p\u00e5 hemmeligheter. Vi har derfor laget et script og profiles.yml som kan ligge i dbt-prosjektet.

Scriptet kan lastes ned fra navikt/dvh_template/dbt/setup_db_user.ps1.

profiles.yml skal opprettes i p\u00e5 toppniv\u00e5 i dbt-prosjektmappen, eksempel navikt/dvh_template/dbt/profiles.yml Merk at navn p\u00e5 profil er profilnavnet det henvises til i dbt_project.yml

<navn p\u00e5 profil>:\n  target: \"{{env_var('DBT_DB_TARGET')}}\"\n ...\n

N\u00e5r profilen er p\u00e5 plass i prosjektmappen kan du teste at dbt fungerer.

"},{"location":"Installasjon-p%C3%A5-VDI/dbt/#teste-dbt-installasjonen","title":"Teste dbt installasjonen","text":"

Etter at dbt er p\u00e5 plass kan du verifisere at dbt fungerer ved \u00e5 kj\u00f8re .\\setup_db_user.ps1 etterfulgt av dbt debug fra prosjektmappen. Er det et nytt prosjekt m\u00e5 du opprette profiles.yml f\u00f8rst.

.\\setup_db_user.ps1 m\u00e5 kj\u00f8res hver gang en starter en ny terminal eller \u00f8nsker \u00e5 bytte target (db). Scriptet vill midlertidlig opprette milj\u00f8variablene i terminal-sesjonen for target, brukernavn, passord, schema og peke dbt mot profiles.yml i prosjektmappen.

Success

$ .\\setup_db_user.ps1\nTarget db: U <eventuelt Q,R eller P>\nSchema: \n\ncmdlet Get-Credential at command pipeline position 1\nSupply values for the following parameters:\nCredential\n\n$ dbt debug\n09:15:08  Running with dbt=1.1.1\ndbt version: 1.1.1\npython version: 3.8.10\npython path: c:\\users\\****\\appdata\\local\\programs\\python\\python38\\python.exe      \nos info: Windows-10-10.0.19044-SP0\nUsing profiles.yml file at C:\\Users\\****\\git\\dvh-sykefravar-dmx\\profiles.yml\nUsing dbt_project.yml file at C:\\Users\\****\\git\\dvh-sykefravar-dmx\\dbt_project.yml\n\n09:15:08  oracle adapter: Running in cx mode\nConfiguration:\n  profiles.yml file [OK found and valid]   \n  dbt_project.yml file [OK found and valid]\n\nRequired dependencies:\n- git [OK found]\n\nConnection:\n  user: ****\n  database: dwhu1\n  schema: ****\n  protocol: tcp\n  host: dm07-scan.adeo.no\n  port: 1521\n  tns_name: None\n  service: dwhu1\n  connection_string: None\n  shardingkey: []\n  supershardingkey: []\n  cclass: None\n  purity: None\n  Connection test: [OK connection ok]\n\nAll checks passed!\n

DBT er n\u00e5 klart til bruk.

Error

Connection test: [ERROR]\n\n2 checks failed:\nError from git --help: Could not find command, ensure it is in the user's PATH and that the user has permissions to run it: \"git\"\n\ndbt was unable to connect to the specified database.\nThe database returned the following error:\n\n  >Database Error\n  DPI-1047: Cannot locate a 64-bit Oracle Client library: \"failed to get message for Windows Error 126\". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help\n\nCheck your database credentials and try again. For more information, visit:\nhttps://docs.getdbt.com/docs/configure-your-profile\n

Oracle client library er mest sannsynlig ikke installert.

"},{"location":"Installasjon-p%C3%A5-VDI/git/","title":"Git","text":"

F\u00f8lg guiden p\u00e5 confluence og legg til milj\u00f8variabler der det kreves. Pass p\u00e5 \u00e5 f\u00f8lge denne guiden til punkt og prikke. Mange problemer har kommet av at noen punkter her er avglemt.

"},{"location":"Installasjon-p%C3%A5-VDI/installere/","title":"Installere dbt-oracle p\u00e5 VDI","text":""},{"location":"Installasjon-p%C3%A5-VDI/installere/#forutsetninger","title":"Forutsetninger","text":"

For \u00e5 kunne utvikle dbt mot oracle m\u00e5 man ha tilgang til utviklerimage som er et VDI som kj\u00f8rer i i NAV datahall. Dette er for \u00e5 kunne f\u00e5 kontakt med Oracle databaser. Du m\u00e5 ogs\u00e5 har f\u00e5tt en eller felere databasebrukere og det er nyttig \u00e5 kunne koble seg opp mot databasene med SQL Developer. Se f\u00f8lgende lenker:

"},{"location":"Installasjon-p%C3%A5-VDI/installere/#installasjon-av-dbt-oracle","title":"Installasjon av dbt-oracle","text":"

For \u00e5 installere dbt-core for Oracle m\u00e5 du installere f\u00f8lgende:

  1. Python 3.11.x
  2. PIP og oppsett av dbt-milj\u00f8
  3. Git / GitHub Desktop
  4. dbt
"},{"location":"Installasjon-p%C3%A5-VDI/installere/#anbefalinger","title":"Anbefalinger","text":"

For en god utvikleropplevelse anbefaler vi deg \u00e5 ha f\u00f8lgende installert:

"},{"location":"Installasjon-p%C3%A5-VDI/miljovariabler/","title":"Legge til milj\u00f8variabler","text":"
  1. S\u00f8k etter milj\u00f8variabler
  2. Klikk p\u00e5: Rediger milj\u00f8bariabler for kontoen din
  1. Trykk p\u00e5 Ny...
  2. Gi variabelen et navn i Variabelnavn.
  3. Skriv inn path til programmet i Variabelverdi
  4. Trykk OK
  1. Marker Path variabelen
  2. Trykk Rediger...
  1. Trykk Ny
  2. Skriv inn navnet p\u00e5 variabelen du opprettet med syntaksen %<variabelnavn>% eks: %PIP%
  3. Trykk OK
  1. Trykk OK

Note

Husk at du m\u00e5 lukke cmd (ledetekst) og \u00e5pne p\u00e5 nytt for at endringen skal tre i kraft.

"},{"location":"Installasjon-p%C3%A5-VDI/oracle-client-library/","title":"Oracle client library","text":"

Note

Dette steget utg\u00e5r hvis du bruker thin mode (tynnklient som ikke trenger klientbiblioteket. Introdusert i dbt-oracle 1.1.1). Det anbefales \u00e5 bruke thin mode, da kj\u00f8ring av kode g\u00e5r en del raskere.

Dette finnes p\u00e5 fellesdisken og mappen programvare\\oracle\\ og kan kopieres lokalt. Det er er instantclient-basiclite-windows som benyttes.

Oppdater PATH milj\u00f8variabelen med path til oracle client library. Eksmpel:

C:\\data\\instantclient-basiclite-windows\\instantclient_19_11\n

Note

Se legg til milj\u00f8variabler hvis du ikke vet hvordan du oppdatere PATH.

"},{"location":"Installasjon-p%C3%A5-VDI/pip-og-oppsett/","title":"PIP og og tilgang til PyPI","text":"
pip --version\n
"},{"location":"Installasjon-p%C3%A5-VDI/pip-og-oppsett/#feilsk-sjekk-om-du-har-pip","title":"Feils\u00f8k: Sjekk om du har PIP","text":"

Har du installert python, s\u00e5 har du nesten sikkert ogs\u00e5 pip. Men dersom overst\u00e5ende feiler, kj\u00f8r pip --version for \u00e5 se om pip er tilgjengelig:

pip --version\n

Success

pip --version\n\npip 21.1.1 from c:\\users\\*****\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pip (python 3.8)\n

Fortsett til Git / GitHub Desktop

Failure

pip --version\n\n'pip' is not recognized as an internal or external command, operable program or batch file.\n

Kj\u00f8r py -3 -m ensurepip for \u00e5 se om pip allerede eksisterer.

Looking in links: c:\\Users\\****\\AppData\\Local\\Temp\\tmp4r6s0n91\nRequirement already satisfied: setuptools in c:\\users\\****\\appdata\\local\\programs\\python\\pythonXX\\lib\\site-packages (58.1.0)\nRequirement already satisfied: pip in c:\\users\\****\\appdata\\local\\programs\\python\\pythonXX\\lib\\site-packages (21.2.4)\n

I dette tilfelle m\u00e5 milj\u00f8variabelen PATH oppdateres. Bruk gjerne Fil utforsker for \u00e5 finne riktig path men normalt ligger PIP under:

c:\\users\\<brukernavn>\\appdata\\local\\programs\\python\\pythonXX\\scripts\n

Info

Se legg til milj\u00f8variabler hvis du ikke vet hvordan du oppdatere PATH.

Husk at du m\u00e5 lukke og \u00e5pne cmd (ledetekst) etter path variabel er lagt inn. Du kan n\u00e5 verifisere at pip er tilgjengelig ved \u00e5 kj\u00f8re pip --version.

"},{"location":"Installasjon-p%C3%A5-VDI/python/","title":"Python","text":"

Sjekk om Python er installert med py --version. dbt-versjon 1.4 og senere st\u00f8tter Python-versjon 3.11, for en tidligere dbt-versjon m\u00e5 Python-versjon v\u00e6re >= 3.8 og < 3.11.

Last eventuelt ned python 3.11.x og installer ved \u00e5 f\u00f8lge installsjonsveiviseren.

G\u00e5 til Windows \"Ledetekst\"/\"Command prompt\" og skriv f\u00f8lgende.

py --version\n

Hvis py ikke fungerer, kan det hende at det heter python:

python --version\n

Success

$ py --version\n\nPython 3.8.10\n

Fortsett til PIP

Failure

$ py --version\n\nPython 3.6.4\n
For gammel version av Python

Last ned Python

Failure

$ py --version\n\npython is not recognized as an internal or external command, operable program, or batch file\n

Python er ikke installert

Last ned Python

"},{"location":"Installasjon-p%C3%A5-VDI/sqlfluff/","title":"SQLFluff","text":"

SQLFluff er en linter som hjelper oss med \u00e5 formattere SQL-koden p\u00e5 en fornuftig m\u00e5te.

"},{"location":"Installasjon-p%C3%A5-VDI/sqlfluff/#installering-av-sqlfluff","title":"Installering av SQLFluff","text":"
pip install sqlfluff sqlfluff-templater-dbt\n
"},{"location":"Installasjon-p%C3%A5-VDI/vscode/","title":"Visual Studio Code","text":"

Bruk https://code.visualstudio.com/download, velg Windows versjonen. Last ned, pakk ut og start programmet code. F\u00f8lg instruksjonene ved innstalleringen.

"},{"location":"Installasjon-p%C3%A5-VDI/vscode/#anbefalte-extensions","title":"Anbefalte extensions","text":""},{"location":"arkitektur/materialisering/","title":"Materialiseringsstrategier","text":"

Hva er materialiseringer i dbt?. dbt-oracle st\u00f8tter alle former for materialisering.

Generelt er det en god ide \u00e5 f\u00f8lge Best practices for materializations fra dbt labs.

Det er likevel noen avvik:

  1. Staging modeller b\u00f8r hovedsakelig v\u00e6re views.
  2. Intermediate ved kompleks logikk. Kj\u00f8r views n\u00e5r du kan. N\u00e5r views g\u00e5r for tregt, har du tre valg:
    1. Kj\u00f8re table materialiseringer. tabeller blir droppet, purget og rekj\u00f8rt med alt innhold fra sp\u00f8rringen i modellfilen. Ikke lurt ved ved st\u00f8rre mengder data, b\u00e5de ytelsesmessig og lagring i flere lag.
    2. Incrememental. Tabellen bevares og nye endrede rader blir lagt til med merge.
    3. Delta last med table models ... trenger POC
  3. Marts skal v\u00e6re stabil. Det er her alle sp\u00f8rringer fra konsumenter kj\u00f8res, og det er viktig for basen \u00e5 opparbeide statistikk p\u00e5 sp\u00f8rringer som kj\u00f8rer ofte.
"},{"location":"arkitektur/style_guide/","title":"DBT Stil Guide","text":"

forket fra https://github.com/dbt-labs/corp/blob/main/dbt_style_guide.md

"},{"location":"arkitektur/style_guide/#modell-naming","title":"Modell Naming","text":"

V\u00e5r modellere organiserers inn i tre hovedgrupper: staging, marts, base/intermediate. See f\u00f8lgnede diskusjon. The navngiving blir som f\u00f8lger:

\u251c\u2500\u2500 dbt_project.yml\n\u2514\u2500\u2500 models\n    \u251c\u2500\u2500 marts\n    |   \u2514\u2500\u2500 core\n    |       \u251c\u2500\u2500 mellomlager\n    |       |   \u251c\u2500\u2500 mellomlager.yml\n    |       |   \u251c\u2500\u2500 posteringer__unionisert.sql\n    |       |   \u2514\u2500\u2500 posteringer__gruppert.sql\n    |       \u251c\u2500\u2500 core.docs\n    |       \u251c\u2500\u2500 dim_artskonti\n    |           \u251c\u2500\u2500 dim_artskonti.yml\n    |           \u2514\u2500\u2500 dim_artskonti.sql\n    |       \u251c\u2500\u2500 dim_konstnadssteder\n    |           \u251c\u2500\u2500 dim_konstnadssteder.yml\n    |           \u2514\u2500\u2500 dim_konstnadssteder.sql\n    |       \u2514\u2500\u2500 fak_hovedbok_posteringer\n    |           \u251c\u2500\u2500 fak_hovedbok_posteringer.yml\n    |           \u2514\u2500\u2500 fak_hovedbok_posteringer.sql\n    \u2514\u2500\u2500 staging\n        \u2514\u2500\u2500 oebs\n            \u251c\u2500\u2500 base\n            |   \u251c\u2500\u2500 base.yml\n            |   \u2514\u2500\u2500 base__oebs_kontoplan.sql\n            \u251c\u2500\u2500 src_oebs.yml\n            \u251c\u2500\u2500 src_oebs.docs\n            \u251c\u2500\u2500 stg_oebs__posteringerslinjer\n            |   \u251c\u2500\u2500 stg_oebs__posteringerslinjer.yml\n            |   \u2514\u2500\u2500 stg_oebs__posteringerslinjer.sql\n            \u251c\u2500\u2500 stg_oebs__budjsett_balanser\n            |   \u251c\u2500\u2500 stg_oebs__budjsett_balanser.yml\n            |   \u2514\u2500\u2500 stg_oebs__budjsett_balanser.sql\n
- All objekter oppgis p\u00e5 flertallsform, slik som: stg_oebs__hovedbok_posteringslinjer, stg_oebs__artskonti, etc. - Basetabeller prefikses med base__, slik som: base__<source>_<object> - Mellomlagringstabeller skal avsluttes med et fortidsverb som indikerer hvilken handling som er gjort p\u00e5 objektet, slik som: hovedbok_posteringslinjer__filtrert_budsjett - Datatorg, eller marter, er fordelt mellom faktaer (uforandelig, verb) og dimensjoner (foranderlig, subjekt) og prefikses med fak_ og dim_, henholdvis. - Staged strukter inneholder alle kolonner fra r\u00e5-tabellen og utvides med avledede kolonner, for \u00e5 angi naturlig n\u00f8kler, hashed n\u00f8kler, omd\u00f8ping av kolonnenavn, etc.

"},{"location":"arkitektur/style_guide/#model-konfigurasjon","title":"Model konfigurasjon","text":"

{{\n  config(\n    materialized = 'table',\n    sort = 'id',\n    dist = 'id'\n  )\n}}\n
- Marter b\u00f8r alltid configureres som tabeller - med mindre det er sv\u00e6rt gode grunner til \u00e5 ikke gj\u00f8re det.

"},{"location":"arkitektur/style_guide/#dbt-konvensjoner","title":"DBT konvensjoner","text":""},{"location":"arkitektur/style_guide/#tester","title":"Tester","text":""},{"location":"arkitektur/style_guide/#navngivining-og-felt-konvensjoner","title":"Navngivining og felt konvensjoner","text":""},{"location":"arkitektur/style_guide/#cteer","title":"CTEer","text":"

For mer informasjon om hvorfor vi bruker CTEer, see f\u00f8lgende post. Kortversjonen er at det hjelper oss \u00e5 samle kildene \u00f8verst, gj\u00f8re enkle transformasjoner og joiner i midten og se resultatet nederst. Oracle skal st\u00f8tte passthrough slik at masse wither p\u00e5 rad ikke p\u00e5virker ytelsen.

WITH\n\nhendelser AS (\n\n    ...\n\n),\n\n-- CTE comments go here\nfiltrerte_hendelser AS (\n\n    ...\n\n),\n\nendelig AS (\n\n    SELECT * FROM filtrerte_hendelser\n\n),\n\n\nSELECT * FROM endelig\n
"},{"location":"arkitektur/style_guide/#sql-stil-guide","title":"SQL stil guide","text":""},{"location":"arkitektur/style_guide/#eksempel-sql","title":"Eksempel SQL","text":"
WITH\n\nmin_data AS (\n\n    SELECT * FROM {{ ref('min_data') }}\n\n),\n\nen_cte AS (\n\n    SELECT * FROM {{ ref('en_cte') }}\n\n),\n\nen_cte_agg AS (\n\n    SELECT\n        id,\n        SUM(felt_4) AS total_felt_4,\n        MAX(felt_5) AS max_felt_5\n\n    FROM en_cte\n    GROUP BY 1\n\n),\n\nendelig AS (\n\n    SELECT [DISITNCT]\n        min_data.felt_1,\n        min_data.felt_2,\n        min_data.felt_3,\n\n        -- Bruk linjeshift for visuelt separere kalkulasjoner inn i blokker.\n        CASE\n            WHEN min_data.kansellerings_dato IS NULL\n                AND min_data.utgangs_dato is not null\n                THEN utgangsdato_date\n            WHEN my_data.kansellerings_dato IS NULL\n                THEN my_data.start_dato + 7\n            ELSE my_data.kansellerings_date\n        END AS kansellerings_dato,\n\n        en_cte_agg.total_felt_4,\n        en_cte_agg.max_felt_5\n\n    FROM min_data\n    LEFT JOIN en_cte_agg  \n        ON min_data.id = en_cte_agg.id\n    WHERE min_data.felt_1 = 'abc'\n        AND (\n            min_data.felt_2 = 'def' OR\n            min_data.felt_2 = 'ghi'\n        )\n    HAVING COUNT(*) > 1\n\n)\n\nSELECT * FROM final\n
"},{"location":"arkitektur/style_guide/#yaml-stil-guide","title":"YAML stil guide","text":""},{"location":"arkitektur/style_guide/#eksample-yaml","title":"Eksample YAML","text":"
version: 2\n\nmodels:\n  - name: hendelser\n    columns:\n      - name: pk_hendelser\n        description: Dette er n prim\u00e6rn\u00f8kkel\n        tests:\n          - unique\n          - not_null\n\n      - name: hendelse_ts \n        description: \"N\u00e5r hendelse skjedde i UTC (eg. 2018-01-01 12:00:00)\"\n        tests:\n          - not_null\n\n      - name: fk_brukere\n        description: Brukeren som st\u00e5 for hendelsen \n        tests:\n          - not_null\n          - relationships:\n              to: ref('brukere')\n              field: pk_brukere\n
"},{"location":"arkitektur/style_guide/#jinja-stil-guide","title":"Jinja stil guide","text":""},{"location":"arkitektur/style_guide/#farger-i-lineage","title":"Farger i lineage","text":"

I lineagen f\u00e5r source-blobber en lys gr\u00f8nn farge, mens alt annet blir lys bl\u00e5. I .yml-filene kan dette endres med node_color-attributten under +docs til en modell eller en mappe. For \u00e5 skille enklere mellom staging, intermediate og marts har vi valgt f\u00f8lgende som en standard, men dette kan du endre som du vil:

# i dbt_project.yml\nmodels:\n  ...\n    staging:\n      +docs:\n        node_color: '#054710' # m\u00f8rk gr\u00f8nn farge\n\n    intermediate:\n      +docs:\n        node_color: '#0E4870' # m\u00f8rk bl\u00e5 farge\n\n    marts: # standard dbt-lysebl\u00e5-farge\n    ...\n

node_color-attributten st\u00f8tter b\u00e5de fargenavn (red) og hex-koder med anf\u00f8rselstegn (\"#cd7f32\"). Se https://docs.getdbt.com/reference/resource-configs/docs for mer informasjon.

"},{"location":"dokumentasjon/dokumentasjon/","title":"Dokumentasjon","text":""},{"location":"dokumentasjon/dokumentasjon/#tabelldokumentasjon","title":"Tabelldokumentasjon","text":"

Tabellene konfigureres og dokumenteres i yml filene i hver mappe i prosjektet. Kommentarer kan settes p\u00e5 b\u00e5de tabellniv\u00e5 og kolonneniv\u00e5. Les mer her.

"},{"location":"dokumentasjon/dokumentasjon/#persist-docs","title":"Persist docs","text":"

dbt-oracle har st\u00f8tte for \u00e5 skrive kommentarer til databasen. Som andre konfig, kan det settes p\u00e5 prosjektniv\u00e5, mappeniv\u00e5 eller modellniv\u00e5. For \u00e5 sette det p\u00e5 prosjektniv\u00e5, legg til f\u00f8lgende i dbt_project.yml

models:\n  +persist_docs:\n    relation: true\n    columns: true\n

En ting \u00e5 v\u00e6re oppmerksom p\u00e5 n\u00e5r persist_docs er aktivert er at kolonnenavn i modellen m\u00e5 v\u00e6re det samme som definert i yml filen.

ORA-00904

ORA-00904: \"KOLONNE\": invalid identifier\n
SELECT\n  kolonne\nFROM ...\n
- name: kolonne_navn\n  description: ...\n

Her har Oracle fors\u00f8kt \u00e5 skrive kommentar til en kolonne som ikke eksisterer. Sammenlign modell og yml fil og sjekk at navnet p\u00e5 kolonnen er lik.

"},{"location":"dokumentasjon/dokumentasjon/#overskrive-overview","title":"Overskrive overview","text":"

Komponentdokumentasjonen kan integreres i dbt dokumentasjonen. I dbt/models folderen m\u00e5 det opprettes en overview.md fil. Bruk gjerne overview.md som mal

"},{"location":"dokumentasjon/dokumentasjon/#deployere-dokumentasjon","title":"Deployere dokumentasjon","text":"

Hver gang kommandoen dbt docs kj\u00f8res, genereres det tre filer i target mappa under dbt prosjektmappa: index.hml, catalog.json og manifest.json. Disse filene er statiske og inneholder alt som trengs for \u00e5 publisere en versjon av dokumentasjonen p\u00e5 en webserver.

Github pages har slik st\u00f8tte. Publsiering til github pages kan gj\u00f8res p\u00e5 flere m\u00e5ter, men kanskje enklest er det \u00e5 bruke en github action:

# Simple workflow for dbt docs content to GitHub Pages\nname: Deploy dbt docs to GitHub Pages\n\non:\n  push:\n    branches: [\"master\"]\n    paths:\n      - docs/**\n\n  workflow_dispatch:\n\n\npermissions:\n  contents: read\n  pages: write\n  id-token: write\n\n# Allow one concurrent deployment\nconcurrency:\n  group: \"pages\"\n  cancel-in-progress: true\n\njobs:\n  deploy:\n    environment:\n      name: github-pages\n      url: ${{ steps.deployment.outputs.page_url }}\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v3\n      - name: Setup Pages\n        uses: actions/configure-pages@v2\n      - name: Upload artifact\n        uses: actions/upload-pages-artifact@v1\n        with:\n          path: 'docs'\n      - name: Deploy to GitHub Pages\n        id: deployment\n        uses: actions/deploy-pages@v1\n
  1. Importer overst\u00e5ende github action i .workflow
  2. Kj\u00f8r kommandoen dbt docs generate
  3. Lag en docs mappe p\u00e5 roten av repoet, hvis det ikke allerede finnes.
  4. Kopier over filene index.hml, catalog.json og manifest.json fra target mappen til docs mappen.
  5. Commit og push til main branchen.
  6. Docen blir automatisk publisert av github action, til url spesifisert av jobben.
"},{"location":"dokumentasjon/overview/","title":"Overview","text":"

{% docs overview %}

"},{"location":"dokumentasjon/overview/#xxx-komponenten","title":"XXX - komponenten","text":""},{"location":"dokumentasjon/overview/#formal","title":"Form\u00e5l","text":"

Overordnet beskrivelse av form\u00e5l med l\u00f8sningen

"},{"location":"dokumentasjon/overview/#komponentbeskrivelse","title":"Komponentbeskrivelse","text":""},{"location":"dokumentasjon/overview/#struktur-pa-repo","title":"Struktur p\u00e5 repo","text":"

Lenke til dokumentasjon p\u00e5 confluence

Vi har f\u00f8lgende mapper: - db (medf\u00f8lgende readme) - install (her ligger ddl filer per tabell/view. Ogs\u00e5 dcl-filer som gir grants) - patch (hvert script har jira-kode som prefiks og kort forklaring/tabellnavn). N\u00e5r man endrer en tabell her m\u00e5 man ogs\u00e5 endre den i install-filen) - utils (kanskje, hvis man trenger det) - dbt - dbt prosjektet. dette er stien der man kj\u00f8rer dbt kommandoer.

"},{"location":"dokumentasjon/overview/#overordnet-design","title":"Overordnet design","text":""},{"location":"dokumentasjon/overview/#dataflyt-diagram","title":"Dataflyt-diagram","text":"

Dataflyten finnes ved \u00e5 klikke p\u00e5 det bl\u00e5 ikonet nederst til h\u00f8yre p\u00e5 siden

# DAG task kilde m\u00e5l kommentar"},{"location":"dokumentasjon/overview/#databasebeskrivelse","title":"Databasebeskrivelse","text":"

En oversikt over de viktigste tabellene

Tabell/Views Beskrivelse tabell1 besk tabell2 besk"},{"location":"dokumentasjon/overview/#databasescript","title":"Databasescript","text":"

Referanser til hvor databasescriptene befinner seg

"},{"location":"dokumentasjon/overview/#drift","title":"Drift","text":""},{"location":"dokumentasjon/overview/#workflows-og-kjretidspunkt","title":"Workflows og kj\u00f8retidspunkt","text":"

Inneholder informasjon om viktige punkter for kj\u00f8retider

"},{"location":"dokumentasjon/overview/#tilgangsstyring","title":"Tilgangsstyring","text":"

Er det noen spesielle rettigheter som kreves for denne komponenten?

"},{"location":"dokumentasjon/overview/#overvaking-og-datakvalitet","title":"Overv\u00e5king og datakvalitet","text":""},{"location":"dokumentasjon/overview/#datakvalitet","title":"Datakvalitet","text":"

Det kj\u00f8res datakvalitetsm\u00e5linger for disse tabellene

"},{"location":"dokumentasjon/overview/#overvaking","title":"Overv\u00e5king","text":"

F\u00f8lgende Sitescope-monitorer kj\u00f8res for denne komponenten.

"},{"location":"dokumentasjon/overview/#sikkerhet-og-personvern","title":"Sikkerhet og personvern","text":"

Inneholder detaljer rundt f.eks tilgang

Det er ikke utarbeidet PVK for denne komponenten.

H\u00e5ndtering av kode 6 og 7: Under arbeid

"},{"location":"dokumentasjon/overview/#backlog","title":"Backlog","text":"

Lenke til jira-oversikt?

"},{"location":"dokumentasjon/overview/#dbt-docs-brukerguide","title":"dbt docs - brukerguide","text":""},{"location":"dokumentasjon/overview/#navigasjon","title":"Navigasjon","text":"

Du kan bruke navigasjonsfanene Project og Database p\u00e5 venstre side av vinduet for \u00e5 utforske modellene i komponenten.

"},{"location":"dokumentasjon/overview/#prosjektfane","title":"Prosjektfane","text":"

Prosjekt-fanen speiler katalogstrukturen til dbt-prosjektet ditt. I denne fanen kan du se alle modeller definert i dbt-prosjektet ditt, samt modeller importert fra dbt-pakker.

"},{"location":"dokumentasjon/overview/#database-fanen","title":"Database-fanen","text":"

Fanen Database viser ogs\u00e5 modellene dine, men i et format som ser mer ut som en databaseutforsker. Denne utsikten viser relasjoner (tabeller og visninger) gruppert i databaseskjemaer. Merk at ephemeral modeller ikke vises i dette grensesnittet, da de ikke finnes i databasen.

"},{"location":"dokumentasjon/overview/#grafutforskning","title":"Grafutforskning","text":"

Du kan klikke p\u00e5 det bl\u00e5 ikonet nederst til h\u00f8yre p\u00e5 siden for \u00e5 se lineage til modellene dine.

P\u00e5 modellsidene vil du se de n\u00e6rmeste foreldrene og barna til modellen du utforsker. Ved \u00e5 klikke p\u00e5 Expand. knappen \u00f8verst til h\u00f8yre i denne avstamningsruten, vil du kunne se alle modellene som brukes til \u00e5 bygge, eller er bygget fra, modellen du utforsker.

N\u00e5r den er utvidet, vil du kunne bruke --select og --exclude modellvalgsyntaks for \u00e5 filtrere modeller i grafen. For mer informasjon om modellvalg, sjekk ut dbt docs.

Merk at du ogs\u00e5 kan h\u00f8yreklikke p\u00e5 modeller for \u00e5 filtrere og utforske grafen interaktivt.

"},{"location":"dokumentasjon/overview/#mer-info","title":"Mer info","text":"

{% enddocs %}

"},{"location":"feilsoking/feilsoking/","title":"Feils\u00f8king","text":"

Samleside for vanlige feilsistuasjoner som kan oppst\u00e5 med dbt og Oracle i NAV

"},{"location":"feilsoking/feilsoking/#incremental","title":"Incremental","text":""},{"location":"feilsoking/feilsoking/#ora-00955-det-finnes-allerede-et-objekt-med-det-navnet","title":"ORA-00955: det finnes allerede et objekt med det navnet","text":"

???

"},{"location":"feilsoking/feilsoking/#ora-00904-kolonne-invalid-identifier","title":"ORA-00904: \"KOLONNE\": invalid identifier","text":"

Dersom persist_docs er aktivert i dbt_project.yml, ta en titt p\u00e5 siden om Dokumentasjon.

"},{"location":"feilsoking/feilsoking/#kobling-mot-oracle-database","title":"Kobling mot oracle database","text":""},{"location":"feilsoking/feilsoking/#dpy-2029-https_proxy-requires-use-of-the-tcps-protocol","title":"DPY-2029: https_proxy requires use of the tcps protocol","text":"

Bytte fra thin mode til cx mode. I outputen du f\u00e5r i terminalen, sjekk hvilken mode du kj\u00f8rer i. Kj\u00f8rer du i thin mode endr det til cx mode. Dette gj\u00f8res ved \u00e5 bruke Oracle Instant Client. Sett path til Oracle Instant Client i milj\u00f8veriabler og slett ORA_PYTHON_DRIVER_TYPE=thin fra milj\u00f8variabler.

"},{"location":"prosjekter/dvh-sykefravar-dmx/","title":"dvh-sykefravar-dmx","text":"

Eies av Team Sykefrav\u00e6r

"},{"location":"prosjekter/dvh-sykefravar-dmx/#formal","title":"Form\u00e5l","text":"

Analysetorg brukt til syfo (sykefrav\u00e6rsoppfoling)

"},{"location":"prosjekter/dvh-sykefravar-dmx/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #dv-team-sykefrav\u00e6r

"},{"location":"prosjekter/dvh_arb_cv/","title":"dvh_arb_cv","text":"

Eies av A-Team

"},{"location":"prosjekter/dvh_arb_cv/#formal","title":"Form\u00e5l","text":"

Siste versjon av CV-elementer og jobb\u00f8nsker per person registrert arbeidss\u00f8ker NAV.

"},{"location":"prosjekter/dvh_arb_cv/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #dv-a-team

"},{"location":"prosjekter/dvh_arb_permittering/","title":"dvh_arb_permittering","text":"

Eies av A-Team

"},{"location":"prosjekter/dvh_arb_permittering/#formal","title":"Form\u00e5l","text":"

NAV har behov for \u00e5 samle statistikk for oversikt over permitterte arbeidss\u00f8kere og forh\u00e5ndsmelding om permittering og masseoppsigelser.

Arbeidsgivere som vurderer \u00e5 g\u00e5 til masseoppsigelser eller permitteringer, gir melding om dette til NAV. Fra 2020 blir disse meldingene sendt inn elektronisk til NAV, og registreres i l\u00f8sningen Permittering.

Dekker i f\u00f8rste omgang forh\u00e5ndsmelding om permittering, dvs n\u00e5r virksomheter permittere over 10 personer s\u00e5 skal de melde til NAV p\u00e5 forh\u00e5nd.

"},{"location":"prosjekter/dvh_arb_permittering/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #dv-a-team

"},{"location":"prosjekter/dvh_arb_person/","title":"dvh_arb_person","text":"

Eies av A-Team

"},{"location":"prosjekter/dvh_arb_person/#formal","title":"Form\u00e5l","text":"

Arbeidsmakedsstatistikken.

"},{"location":"prosjekter/dvh_arb_person/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #dv-a-team

"},{"location":"prosjekter/dvh_arb_styrke_ssb/","title":"dvh_arb_styrke_ssb","text":"

Eies av A-Team

"},{"location":"prosjekter/dvh_arb_styrke_ssb/#formal","title":"Form\u00e5l","text":"

Komponenten leser data inn fra SSB i to forskjellige l\u00f8p:

"},{"location":"prosjekter/dvh_arb_styrke_ssb/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #dv-a-team

"},{"location":"prosjekter/dvh_arb_tiltak/","title":"dvh_arb_tiltak","text":"

Eies av Team Oppf\u00f8lging Eies av Team Oppf\u00f8lging)

"},{"location":"prosjekter/dvh_arb_tiltak/#formal","title":"Form\u00e5l","text":"

Brukes i Tiltaks- og oppf\u00f8lgingsstatistikken.

"},{"location":"prosjekter/dvh_arb_tiltak/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #dv-oppf\u00f8lging

"},{"location":"prosjekter/nystol/vdl-regnskapsdata/","title":"vdl-regnskapsdata","text":"

Eies av Team-VDL

"},{"location":"prosjekter/nystol/vdl-regnskapsdata/#formal","title":"Form\u00e5l","text":"

Analysedata av hovedbok

"},{"location":"prosjekter/nystol/vdl-regnskapsdata/#dokumentasjon","title":"Dokumentasjon","text":"

slack: #virksomhetsdatalaget

"}]} \ No newline at end of file