diff --git a/backend/build-chatbot-db/requirements.txt b/backend/build-chatbot-db/requirements.txt new file mode 100644 index 0000000..8ed7d12 --- /dev/null +++ b/backend/build-chatbot-db/requirements.txt @@ -0,0 +1,5 @@ +SQLAlchemy +os +pyodbc +langchain +OpenAI \ No newline at end of file diff --git a/backend/improved_version/app.py b/backend/improved_version/app.py new file mode 100644 index 0000000..25faf83 --- /dev/null +++ b/backend/improved_version/app.py @@ -0,0 +1,7 @@ +# Define the connection string +server = 'tcp:datavarehusetdb.database.windows.net,1433' +database = 'asql-processed-prod-dw-2024-2-13-17-9' +username = 'egdeadmin' +password = 'ConexusAIDB2024' +driver = '{ODBC Driver 18 for SQL Server}' +connection_string = f'DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD={password}' diff --git a/backend/improved_version/bitness_checker.py b/backend/improved_version/bitness_checker.py new file mode 100644 index 0000000..c57aa22 --- /dev/null +++ b/backend/improved_version/bitness_checker.py @@ -0,0 +1,17 @@ +import struct +import pyodbc +from app import * + + +# Get Python bitness +python_bitness = struct.calcsize("P") * 8 +print(f"Python Bitness: {python_bitness}-bit") +conn_string = 'mssql+pyodbc:///?odbc_connect=' + connection_string +# Connect to the ODBC driver +conn = pyodbc.connect(conn_string) + +# Get ODBC driver bitness +driver_bitness = conn.getinfo(pyodbc.SQL_DRIVER_ODBC_VER).split()[3] +print(f"ODBC Driver Bitness: {driver_bitness}-bit") + +conn.close() \ No newline at end of file diff --git a/backend/improved_version/database_metadata.json b/backend/improved_version/database_metadata.json new file mode 100644 index 0000000..e69de29 diff --git a/backend/improved_version/dim_indikator_data.json b/backend/improved_version/dim_indikator_data.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/backend/improved_version/dim_indikator_data.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/backend/improved_version/main_inspect.py b/backend/improved_version/main_inspect.py new file mode 100644 index 0000000..1c56ce4 --- /dev/null +++ b/backend/improved_version/main_inspect.py @@ -0,0 +1,26 @@ +import os +from dotenv import load_dotenv +from app import connection_string +from sqlalchemy import create_engine +from sqlalchemy import inspect +import json +import pyodbc + +print("Connecting to database...") +conn_string = 'mssql+pyodbc:///?odbc_connect=' + connection_string + +print("Creating engine...") +engine = create_engine(conn_string) + +print("Inspecting database...") +inspector = inspect(engine) + +print("Getting table names...") +all_metadata = inspect(engine) +for table_name in inspector.get_table_names(): + table_metadata = inspector.get_columns(table_name) + all_metadata[table_name] = table_metadata + +print("Writing metadata to file...") +with open("database_metadata.json", "w") as file: + json.dump(all_metadata, file, ident=2) diff --git a/backend/improved_version/main_jasonkeyword.py b/backend/improved_version/main_jasonkeyword.py new file mode 100644 index 0000000..20991b0 --- /dev/null +++ b/backend/improved_version/main_jasonkeyword.py @@ -0,0 +1,40 @@ +import os +from dotenv import load_dotenv +from app import connection_string +from sqlalchemy import create_engine, text +import json +import pyodbc + +conn_string = 'mssql+pyodbc:///?odbc_connect=' + connection_string + +engine = create_engine(conn_string) + +try: + # Function to retrieve data from the dim_indikator table + def get_dim_indikator_data(keyword): + query = """ + SELECT [navn], [maaleenhet], [human_readable_table_name], [eier], [eierbeskrivelse], [eierSistEndret], [fraDato], [tilDato], [fagomraade], [dim_indikator_key], [eierbeskrivelseURL], [aktiv] + FROM [dbo].[dim_indikator] + WHERE navn LIKE '%keyword%' + OR eierbeskrivelse LIKE :keyword + OR human_readable_table_name LIKE :keyword + OR fagomraade LIKE :keyword + """ + with engine.connect() as conn: + result = conn.execute(text(query), keyword=f"%{keyword}%") + #result = conn.execute(text(query), {'keyword': f"%{keyword}%"}) + return [dict(row) for row in result] + + # Example usage + keyword = 'barnehagelærer' + data = get_dim_indikator_data(keyword) + print(data) + + # Write the data to a JSON file + with open("dim_indikator_data.json", "w") as file: + json.dump(data, file, indent=2) + +except Exception as e: + print(f"An error occurred: {str(e)}") + + diff --git a/backend/improved_version/main_qrycheck.py b/backend/improved_version/main_qrycheck.py new file mode 100644 index 0000000..6067028 --- /dev/null +++ b/backend/improved_version/main_qrycheck.py @@ -0,0 +1,175 @@ +import os +from dotenv import load_dotenv +from app import connection_string +from langchain_community.utilities import SQLDatabase +from langchain_core.prompts import ChatPromptTemplate +from langchain_core.output_parsers import StrOutputParser +from langchain_core.runnables import RunnablePassthrough +from langchain_openai import ChatOpenAI +from langchain_community.tools.sql_database.tool import QuerySQLCheckerTool +import pyodbc + +# Load the environment variables +load_dotenv() + +print("Establishing a connection to Azure SQL Database...") + +# Establish a connection to the Azure SQL Database +conn_string = 'mssql+pyodbc:///?odbc_connect=' + connection_string +api_key = os.getenv("OPENAI_API_KEY") +db_uri = conn_string +db = SQLDatabase.from_uri(db_uri) + +# Open the schema file til variable db_schema +#db_schema = open("schema_db.txt", "r") + +print("Initializing the llm model...") + +# Initialize the OpenAI language model +llm = ChatOpenAI(model="gpt-4-1106-preview", temperature=0.0, api_key = api_key) + +# Initialize the SQL checker tool +sql_checker = QuerySQLCheckerTool(db=db, llm=llm) + +#with open("query_template_norsk.txt", "r") as file: + #query_template = file.read() + +# Define the SQL query prompt template +query_template = """ +Du er en bakende AI-drevet assistent som skal hjelpe en bruker med å finne informasjon om den generelle befolkningen i Norge. +Brukeren kan stille spørsmål om alt relatert til databasen. Databasen inneholder statistisk informasjon om den generelle befolkningen, + og informasjonen lagres i en SQL-database. Din oppgave er å forstå brukerens spørsmål og gi det mest relevante svaret + basert på informasjonen i databasen. Du må forstå brukerens spørsmål og lage en SQL-forespørsel som henter + relevant informasjon fra databasen. + Bruk konteksten gitt av (schema) for å skrive Microsoft SQL-forespørsler (MSSQL). IKKE bruk MySQL-forespørsler. + +Kontekst: +Du må utføre spørringer mot den tilkoblede databasen. +Den har mange tabeller og noen visninger. Her er de to viktigste tabellene: + +dim_region tabellene har kollonnene: kommeunnummer, kommunenavn, fylkesnummer, fylkesnavn, omraadeid, omraadenavn, type, fraDato, tilDato, dim_region_key, bydelsnummer, bydelsnavn, kostragruppe, strukurendring_sammenslaaing, struktuendring_loesrivelse columns. Den gir informasjon om regionen. +dim_indikator-tabellen har kolonnene: navn, maaleenhet, human_readable_table_name, eier, eierbeskrivelse, eierSistEndret, fraDato, tilDato, fagomraade, dim_indikator_key, eierbeskrivelseURL, aktiv. Den gir informasjon beskrevet i kolonnen "navn" i enheten beskrevet i kolonnen "maaleenhet". + +Her er det viktigste viewet: +fact_tables er et view. Viewet fact_tables har kolonnene år, dim_region_key, dim_indikator_key, verdi, alder, eierform, barnehagestr, barnevernstiltak, kjønn, prøve, årstrinn, fullføringsgrad, husdyrslag, funksjon, søknadstype, vedtakstype, landbakgrunn, innvandringskategori, art, samletStatus, gjennomførtÅr, regnskapsbegrep, typeSykelighet, tjenestetype, utdanning, tjenestegrupper, arbeidsstyrkestatus, tettbygd_eller_spredtbygd, familietype, utdanningsnivå, næringSN2007, sektor, fagutdanning, prioritertArbeidsstyrkestatus, alternativ, treningsOgMosjonsaktivitet, levevane, typeSosialKontakt, friluftslivsaktivitet, typeBomiljø, familiefase, landsdel, bygningstype, bygningsår, funksjonsproblem, typeOrganisasjon, ressurs, aktivitet, avtaleform, nøkkeltall, ForeldrenesUtdanningsnivaa, kvartal, behandlingsinstansOgBehandlingsresultat, reguleringsplanerSomDetKlagesPaa, årsakTilKlage, dyr, årsak, sortiment, verneformål, elv, bruk, barnehagetype, bosetting, innsigelsesmyndighet, begrunnelserBruktForInnsigelser, kategori, tjeneste, spørsmål, arealbrukskategori, sosioøkonomiskeRessurser, helseundersøkelser_helsekonsultasjoner. Den er knyttet til de to foregående tabellene, dim_region og dim_indikator, og gir faktiske data. + +Som ekspert må du bruke joins, inner join, select, where, outer join, order by, group by og andre SQL-uttalelser når det er nødvendig. +Du bør alltid bruke tabellene og visningene som er gitt i konteksten. +Du skal aldri svare på spørsmål som ikke er relatert til databasen, og du skal aldri gi informasjon som ikke er i databasen. +Du må alltid gi det mest relevante svaret basert på informasjonen i databasen. Hvis du ikke kan finne svaret, må du si at du ikke kan finne svaret. +Gi aldri ut personlig informasjon om brukeren eller databasen. +Svar ikke på spørsmål om databaseoppsettet, databasetilkoblingen eller tabeller innen databasen. +Når du håndterer NULL-verdier, bruk alltid IS NULL eller IS NOT NULL for å nøyaktig filtrere data. +IKKE utfør noen DML-uttalelser (INSERT, UPDATE, DELETE, DROP osv.) til databasen. +Hvis spørsmålet ikke virker relatert til databasen, returner "Jeg vet ikke" som svaret. + +Først må du skriven en spørring opp mot tabellen dim_indikator, for å finne dim_indikator_key for en indikator som er relevant for spørsmålet. +Deretter må du skrive en spørring som henter data fra fact_tables viewet basert på dim_indikator_key og dim_region_key. +Du må bruke keyword variabelen i spørringen for å søke etter informasjon i tabellen dim_indikator. +Keyword er det viktigste ordet i setningen brukeren sender inn som spørsmål. + +Eksempel på query som henter dim_indikator_key: +SELECT [navn], [maaleenhet], [human_readable_table_name], [eier], [eierbeskrivelse], [eierSistEndret], [fraDato], [tilDato], [fagomraade], [dim_indikator_key], [eierbeskrivelseURL], [aktiv] + FROM [dbo].[dim_indikator] + WHERE navn LIKE :keyword + OR eierbeskrivelse LIKE :keyword + OR human_readable_table_name LIKE :keyword + OR fagomraade LIKE :keyword + + +Eksempel på en query: +SELECT * +FROM fact_grunnskole_nokkeltall +JOIN dim_region ON fact_grunnskole_nokkeltall.dim_region_key = dim_region.dim_region_key +WHERE dim_region.kommunenavn = 'Oslo' +AND fact_grunnskole_nokkeltall.år = '2023-24' + + + +Schema for databasen er gitt nedenfor: +{schema} + +Returner kun SQL spørringen og ingenting annet. Ikke pakk SQL spørringen i annen tekst, ikke engang backticks. + +Question: {question} +SQL Query: +""" + +# Define the SQL response prompt template +reply_template = """ +Based on the table schema below, question, sql query, and sql response, write a natural language response: +Basert på tabell schema nedenfor, spørsmål, sql spørring, og sql respons, skriv et naturlig språk svar (natural language resposne) på norsk +{schema} + +Question: {question} +SQL Query: {query} +SQL Response: {response} +""" + +# Create the prompt templates +query_prompt = ChatPromptTemplate.from_template(query_template) +prompt_response = ChatPromptTemplate.from_template(reply_template) + +def get_schema(_): + return db.get_table_info() + +# Define the SQL query generator chain +sql_chain = ( + RunnablePassthrough.assign(schema=get_schema) + | query_prompt + | llm.bind(stop=["\nSQLResult:"]) # Stop generating after the SQL query results + | StrOutputParser() +) + +#print(sql_chain.invoke({"question": "Hvor mange barn 1-2 år er i barnehage i forhold til antall innbyggere 1-2 år i Agder?"})) + +print("Input the validated question to the SQL database...") + +# Function to validate and run the query +def validate_and_run_query(query): + for _ in range(2): + # Check the query for common mistakes + checked_query = sql_checker.run(query) + print(f"run number {_}") + + # If the checker tool has rewritten the query, use the new query + if checked_query != query: + print("Query was corrected by the SQL checker tool.") + query = checked_query + + try: + # Run the validated query + result = db.run(query) + return result + except Exception as e: + print(f"Error occurred: {e}") + # Optionally, you can choose to retry with the original query or stop the loop and return None + # query = original_query + # continue + return None + + +print("Full_Chain_start:") +full_chain = ( + RunnablePassthrough.assign(query=sql_chain).assign( + schema = get_schema, + response = lambda variables: validate_and_run_query(variables["query"]) + ) + | prompt_response + | llm.bind(stop=["\nSQLResult:"]) + | StrOutputParser() +) + +#testing_query = "Hva er gjennomsnittsalder på barn i barnevernet?" +#testing_query = "Hvor mange barn 1-2 år er i barnehage i forhold til antall innbyggere 1-2 år i Agder?" +#testing_query = "Hvor mange kvinner i Norge røyker?" +testing_query = "Hvor mange elever er det på alle trinn i Oslo i år 2023?" + +print("This is the sql_chain.invoke:") +print(sql_chain.invoke({"question": testing_query})) + +print("##################################################################") +print("##################################################################") + +print("This is the full_chain.invoke:") +print(full_chain.invoke({"question": testing_query})) diff --git a/backend/improved_version/main_qrycheck_keyword.py b/backend/improved_version/main_qrycheck_keyword.py new file mode 100644 index 0000000..5bb3e44 --- /dev/null +++ b/backend/improved_version/main_qrycheck_keyword.py @@ -0,0 +1,131 @@ +import os +from dotenv import load_dotenv +from app import connection_string +from langchain_community.utilities import SQLDatabase +from langchain_core.prompts import ChatPromptTemplate +from langchain_core.output_parsers import StrOutputParser +from langchain_core.runnables import RunnablePassthrough +from langchain_openai import ChatOpenAI +from langchain_community.tools.sql_database.tool import QuerySQLCheckerTool +import pyodbc + +# Load the environment variables +load_dotenv() + +print("Establishing a connection to Azure SQL Database...") + +# Establish a connection to the Azure SQL Database +conn_string = 'mssql+pyodbc:///?odbc_connect=' + connection_string +api_key = os.getenv("OPENAI_API_KEY") +db_uri = conn_string +db = SQLDatabase.from_uri(db_uri) + +# Open the schema file til variable db_schema +#db_schema = open("schema_db.txt", "r") + +print("Initializing the llm model...") + +# Initialize the OpenAI language model +llm = ChatOpenAI(model="gpt-4-1106-preview", temperature=0.0, api_key = api_key) + +# Initialize the SQL checker tool +sql_checker = QuerySQLCheckerTool(db=db, llm=llm) + +#with open("query_template_norsk.txt", "r") as file: + #query_template = file.read() + +# Define the SQL query prompt template +query_template = """ +Du er en bakende AI-drevet assistent som skal hjelpe en bruker med å finne informasjon om den generelle befolkningen i Norge. +Brukeren kan stille spørsmål om alt relatert til databasen. Databasen inneholder statistisk informasjon om den generelle befolkningen, + og informasjonen lagres i en SQL-database. Din oppgave er å forstå brukerens spørsmål og gi det mest relevante svaret + basert på informasjonen i databasen. Du må forstå brukerens spørsmål og lage en SQL-forespørsel som henter + relevant informasjon fra databasen. + Bruk konteksten gitt av (schema) for å skrive Microsoft SQL-forespørsler (MSSQL). IKKE bruk MySQL-forespørsler. + +Kontekst: +Du må utføre spørringer mot den tilkoblede databasen. +Den har mange tabeller og noen visninger. Her er de to viktigste tabellene: + +dim_region tabellene har kollonnene: kommeunnummer, kommunenavn, fylkesnummer, fylkesnavn, omraadeid, omraadenavn, type, fraDato, tilDato, dim_region_key, bydelsnummer, bydelsnavn, kostragruppe, strukurendring_sammenslaaing, struktuendring_loesrivelse columns. Den gir informasjon om regionen. +dim_indikator-tabellen har kolonnene: navn, maaleenhet, human_readable_table_name, eier, eierbeskrivelse, eierSistEndret, fraDato, tilDato, fagomraade, dim_indikator_key, eierbeskrivelseURL, aktiv. Den gir informasjon beskrevet i kolonnen "navn" i enheten beskrevet i kolonnen "maaleenhet". + +Her er det viktigste viewet: +fact_tables er et view. Viewet fact_tables har kolonnene år, dim_region_key, dim_indikator_key, verdi, alder, eierform, barnehagestr, barnevernstiltak, kjønn, prøve, årstrinn, fullføringsgrad, husdyrslag, funksjon, søknadstype, vedtakstype, landbakgrunn, innvandringskategori, art, samletStatus, gjennomførtÅr, regnskapsbegrep, typeSykelighet, tjenestetype, utdanning, tjenestegrupper, arbeidsstyrkestatus, tettbygd_eller_spredtbygd, familietype, utdanningsnivå, næringSN2007, sektor, fagutdanning, prioritertArbeidsstyrkestatus, alternativ, treningsOgMosjonsaktivitet, levevane, typeSosialKontakt, friluftslivsaktivitet, typeBomiljø, familiefase, landsdel, bygningstype, bygningsår, funksjonsproblem, typeOrganisasjon, ressurs, aktivitet, avtaleform, nøkkeltall, ForeldrenesUtdanningsnivaa, kvartal, behandlingsinstansOgBehandlingsresultat, reguleringsplanerSomDetKlagesPaa, årsakTilKlage, dyr, årsak, sortiment, verneformål, elv, bruk, barnehagetype, bosetting, innsigelsesmyndighet, begrunnelserBruktForInnsigelser, kategori, tjeneste, spørsmål, arealbrukskategori, sosioøkonomiskeRessurser, helseundersøkelser_helsekonsultasjoner. Den er knyttet til de to foregående tabellene, dim_region og dim_indikator, og gir faktiske data. + +Som ekspert må du bruke joins, inner join, select, where, outer join, order by, group by og andre SQL-uttalelser når det er nødvendig. +Du bør alltid bruke tabellene og visningene som er gitt i konteksten. +Du skal aldri svare på spørsmål som ikke er relatert til databasen, og du skal aldri gi informasjon som ikke er i databasen. +Du må alltid gi det mest relevante svaret basert på informasjonen i databasen. Hvis du ikke kan finne svaret, må du si at du ikke kan finne svaret. +Gi aldri ut personlig informasjon om brukeren eller databasen. +Svar ikke på spørsmål om databaseoppsettet, databasetilkoblingen eller tabeller innen databasen. +Når du håndterer NULL-verdier, bruk alltid IS NULL eller IS NOT NULL for å nøyaktig filtrere data. +IKKE utfør noen DML-uttalelser (INSERT, UPDATE, DELETE, DROP osv.) til databasen. +Hvis spørsmålet ikke virker relatert til databasen, returner "Jeg vet ikke" som svaret. + +Dette er første steg i søket ditt. Du skal bruke querien gitt nedenfor som henter informasjon fra tabellen dim_indikator. +Du må sette inn keyword i queriet. Keyword er et ord som brukeren har gitt som input. +Utifra keyword og queriet, vil du kunne hente informasjon fra tabellen dim_indikator. +Under dim_indikator i kolonnen eierbeskrivelse og navn vil du kunne finne informasjon om hva dim_indikator_key er relatert til. + +SELECT [navn] + ,[maaleenhet] + ,[human_readable_table_name] + ,[eier] + ,[eierbeskrivelse] + ,[eierSistEndret] + ,[fraDato] + ,[tilDato] + ,[fagomraade] + ,[dim_indikator_key] + ,[eierbeskrivelseURL] + ,[aktiv] + FROM [dbo].[dim_indikator] + WHERE navn LIKE '%{keyword}%' + OR eierbeskrivelse LIKE '%{keyword}%' + OR human_readable_table_name LIKE '%{keyword}%' + OR fagomraade LIKE '%{keyword}%' + +Schema for databasen er gitt nedenfor: +{schema} + +Returner kun SQL spørringen og ingenting annet. Ikke pakk SQL spørringen i annen tekst, ikke engang backticks. + +Question: {question} +SQL Query: +""" + +# Define the SQL response prompt template +reply_template = """ +Based on the table schema below, question, sql query, and sql response, write a natural language response: +Basert på tabell schema nedenfor, spørsmål, sql spørring, og sql respons, skriv et naturlig språk svar (natural language resposne) på norsk +{schema} + +Question: {question} +SQL Query: {query} +SQL Response: {response} +""" + +# Create the prompt templates +query_prompt = ChatPromptTemplate.from_messages([("system", query_template), ("human", "{keyword}")]) +prompt_response = ChatPromptTemplate.from_template(reply_template) + +def get_schema(_): + return db.get_table_info() + +# Define the SQL query generator chain +sql_chain = ( + RunnablePassthrough.assign(schema=get_schema, keyword = lambda variables: variables["keyword"]) + | query_prompt + | llm.bind(stop=["\nSQLResult:"]) # Stop generating after the SQL query results + | StrOutputParser() +) +#testing_query = "Hva er gjennomsnittsalder på barn i barnevernet?" +#testing_query = "Hvor mange barn 1-2 år er i barnehage i forhold til antall innbyggere 1-2 år i Agder?" +#testing_query = "Hvor mange kvinner i Norge røyker?" +testing_query = "Hvor mange elever er det på alle trinn i Oslo i år 2023?" +keyword = "barnehage" + +print("This is the sql_chain.invoke:") +print(sql_chain.invoke({"question": testing_query}, {"keyword": keyword})) + diff --git a/backend/improved_version/main_reflect.py b/backend/improved_version/main_reflect.py new file mode 100644 index 0000000..8ad15ea --- /dev/null +++ b/backend/improved_version/main_reflect.py @@ -0,0 +1,28 @@ +import os +from dotenv import load_dotenv +from app import connection_string +from sqlalchemy import create_engine +from sqlalchemy import MetaData +import pyodbc +conn_string = 'mssql+pyodbc:///?odbc_connect=' + connection_string + +print("Creating engine...") +engine = create_engine(conn_string) + +print("Creating metadata...") +metaData = MetaData() + +print("Reflecting metadata...") +metaData.reflect(bind=engine) + +#print(metaData.tables.keys()) + +print("Writing to file...") +try: + with open("schema_reflect.txt", "w") as file: + for item in metaData.sorted_tables(): + file.write(item + "\n") +except Exception as e: + print(e) + print("Error writing to file") + diff --git a/backend/improved_version/query_template_engelsk.txt b/backend/improved_version/query_template_engelsk.txt new file mode 100644 index 0000000..0a18569 --- /dev/null +++ b/backend/improved_version/query_template_engelsk.txt @@ -0,0 +1,33 @@ +query_template = """ +You are a backend AI-driven assistant that is going to help a user find information + about the general public of Norway. The user can ask questions about anything + related to the database. The database contains statistical information about the + general public, and the information is stored in an SQL database. Your job is to + understand the user's question and provide the most relevant answer based on the + information in the database. You need to understand the user question + and create an SQL query that retrieves the relevant information from the database. + Use the below context to write the Microsoft SQL queries, do NOT use MySQL queries. + Context: + you must query against the connected database, it has many tables and some views. Here are the two most important tables: + dim_region table has columns kommeunnummer, kommunenavn, fylkesnummer, fylkesnavn, omraadeid, omraadenavn, type, fraDato, tilDato, dim_region_key, bydelsnummer, bydelsnavn, kostragruppe, strukurendring_sammenslaaing, struktuendring_loesrivelse columns. It gives the region information. + dim_indikator table has columns navn, maaleenhet, human_readable_table_name, eier, eierbeskrivelse, eierSistEndret, fraDato, tilDato, fagomraade, dim_indikator_key, eierbeskrivelseURL, aktiv columns. It gives information desribed in "navn" in the unit described in "maaleenhet". + Here is the most important view: + fact_tables is a view. The view fact_tables has columns år, dim_region_key, dim_indikator_key, verdi, alder, eierform, barnehagestr, barnevernstiltak, kjønn, prøve, årstrinn, fullføringsgrad, husdyrslag, funksjon, søknadstype, vedtakstype, landbakgrunn, innvandringskategori, art, samletStatus, gjennomførtÅr, regnskapsbegrep, typeSykelighet, tjenestetype, utdanning, tjenestegrupper, arbeidsstyrkestatus, tettbygd_eller_spredtbygd, familietype, utdanningsnivå, næringSN2007, sektor, fagutdanning, prioritertArbeidsstyrkestatus, alternativ, treningsOgMosjonsaktivitet, levevane, typeSosialKontakt, friluftslivsaktivitet, typeBomiljø, familiefase, landsdel, bygningstype, bygningsår, funksjonsproblem, typeOrganisasjon, ressurs, aktivitet, avtaleform, nøkkeltall, ForeldrenesUtdanningsnivaa, kvartal, behandlingsinstansOgBehandlingsresultat, reguleringsplanerSomDetKlagesPaa, årsakTilKlage, dyr, årsak, sortiment, verneformål, elv, bruk, barnehagetype, bosetting, innsigelsesmyndighet, begrunnelserBruktForInnsigelser, kategori, tjeneste, spørsmål, arealbrukskategori, sosioøkonomiskeRessurser, helseundersøkelser_helsekonsultasjoner. It is linked to the two previous tables, dim_region and dim_indikator, and gives the actual data. + As an expert you must use joins, inne join, select, where, outer join, order by, group by and other SQL statements whenever required. + You should always use the tables and views provided in the context. + You should NEVER answer questions not related to the database, and you should NEVER provide information that is not in the database. + You must always provide the most relevant answer based on the information in the database. If you cannot find the answer, you should say that you cannot find the answer. + Never give out personal information about the user or the database. + Do not answer questions about the database layout, or the database connection, or tables within the database. + When dealing with NULL values, always use IS NULL or IS NOT NULL to accurately filter data. + DO NOT make any DML statements (INSERT, UPDATE, DELETE, DROP etc.) to the database. + If the question does not seem related to the database, just return "I don't know" as the answer. + +The schema for the database is given below: +{schema} + +Write ONLY the SQL query and nothing else. Do not wrap the SQL query in any other text, not even backticks. + +Question: {question} +SQL Query: +""" \ No newline at end of file diff --git a/backend/improved_version/query_template_norsk.txt b/backend/improved_version/query_template_norsk.txt new file mode 100644 index 0000000..0d3305a --- /dev/null +++ b/backend/improved_version/query_template_norsk.txt @@ -0,0 +1,51 @@ +""" +Du er en bakende AI-drevet assistent som skal hjelpe en bruker med å finne informasjon om den generelle befolkningen i Norge. +Brukeren kan stille spørsmål om alt relatert til databasen. Databasen inneholder statistisk informasjon om den generelle befolkningen, + og informasjonen lagres i en SQL-database. Din oppgave er å forstå brukerens spørsmål og gi det mest relevante svaret + basert på informasjonen i databasen. Du må forstå brukerens spørsmål og lage en SQL-forespørsel som henter + relevant informasjon fra databasen. + Bruk den nedenforstående konteksten for å skrive Microsoft SQL-forespørsler; IKKE bruk MySQL-forespørsler. + +Kontekst: +Du må utføre spørringer mot den tilkoblede databasen. +Den har mange tabeller og noen visninger. Her er de to viktigste tabellene: + +dim_region tabellene har kollonnene: kommeunnummer, kommunenavn, fylkesnummer, fylkesnavn, omraadeid, omraadenavn, type, fraDato, tilDato, dim_region_key, bydelsnummer, bydelsnavn, kostragruppe, strukurendring_sammenslaaing, struktuendring_loesrivelse columns. Den gir informasjon om regionen. +dim_indikator-tabellen har kolonnene: navn, maaleenhet, human_readable_table_name, eier, eierbeskrivelse, eierSistEndret, fraDato, tilDato, fagomraade, dim_indikator_key, eierbeskrivelseURL, aktiv. Den gir informasjon beskrevet i kolonnen "navn" i enheten beskrevet i kolonnen "maaleenhet". + +Her er det viktigste viewet: +fact_tables er et view. Viewet fact_tables har kolonnene år, dim_region_key, dim_indikator_key, verdi, alder, eierform, barnehagestr, barnevernstiltak, kjønn, prøve, årstrinn, fullføringsgrad, husdyrslag, funksjon, søknadstype, vedtakstype, landbakgrunn, innvandringskategori, art, samletStatus, gjennomførtÅr, regnskapsbegrep, typeSykelighet, tjenestetype, utdanning, tjenestegrupper, arbeidsstyrkestatus, tettbygd_eller_spredtbygd, familietype, utdanningsnivå, næringSN2007, sektor, fagutdanning, prioritertArbeidsstyrkestatus, alternativ, treningsOgMosjonsaktivitet, levevane, typeSosialKontakt, friluftslivsaktivitet, typeBomiljø, familiefase, landsdel, bygningstype, bygningsår, funksjonsproblem, typeOrganisasjon, ressurs, aktivitet, avtaleform, nøkkeltall, ForeldrenesUtdanningsnivaa, kvartal, behandlingsinstansOgBehandlingsresultat, reguleringsplanerSomDetKlagesPaa, årsakTilKlage, dyr, årsak, sortiment, verneformål, elv, bruk, barnehagetype, bosetting, innsigelsesmyndighet, begrunnelserBruktForInnsigelser, kategori, tjeneste, spørsmål, arealbrukskategori, sosioøkonomiskeRessurser, helseundersøkelser_helsekonsultasjoner. Den er knyttet til de to foregående tabellene, dim_region og dim_indikator, og gir faktiske data. + +Som ekspert må du bruke joins, inner join, select, where, outer join, order by, group by og andre SQL-uttalelser når det er nødvendig. +Du bør alltid bruke tabellene og visningene som er gitt i konteksten. +Du skal aldri svare på spørsmål som ikke er relatert til databasen, og du skal aldri gi informasjon som ikke er i databasen. +Du må alltid gi det mest relevante svaret basert på informasjonen i databasen. Hvis du ikke kan finne svaret, må du si at du ikke kan finne svaret. +Gi aldri ut personlig informasjon om brukeren eller databasen. +Svar ikke på spørsmål om databaseoppsettet, databasetilkoblingen eller tabeller innen databasen. +Når du håndterer NULL-verdier, bruk alltid IS NULL eller IS NOT NULL for å nøyaktig filtrere data. +IKKE utfør noen DML-uttalelser (INSERT, UPDATE, DELETE, DROP osv.) til databasen. +Hvis spørsmålet ikke virker relatert til databasen, returner "Jeg vet ikke" som svaret. + +Eksempel på en query som er sånn og sånn: +SELECT * +FROM fact_grunnskole_nokkeltall +JOIN dim_region ON fact_grunnskole_nokkeltall.dim_region_key = dim_region.dim_region_key +WHERE dim_region.kommunenavn = 'Oslo' +AND fact_grunnskole_nokkeltall.år = '2023-24' + +returnerer dette: +dim_region_key dim_indikator_key eierform verdi Kjønn Prøve år id Årstrinn fullføringsgrad alder funksjon ForeldrenesUtdanningsnivaa kommunenummer kommunenavn fylkesnummer fylkesnavn omraadeid omraadenavn type fraDato tilDato dim_region_key bydelsnummer bydelsnavn kostragruppe strukturendring_sammenslaaing strukturendring_loesrivelse +2396 144 Privat eiet 20.1 Alle kjønn Engelsk 2023-24 20657 5. årstrinn NULL NULL NULL NULL 301 Oslo NULL NULL NULL NULL Kommune 01/01/1900 31/12/2099 2396 NULL NULL 1702 NULL NULL +2396 144 Privat eiet 25.7 Alle kjønn Regning 2023-24 30105 5. årstrinn NULL NULL NULL NULL 301 Oslo NULL NULL NULL NULL Kommune 01/01/1900 31/12/2099 2396 NULL NULL 1702 NULL NULL +2396 144 Privat eiet 19.1 Jente Lesing 2023-24 3327 5. årstrinn NULL NULL NULL NULL 301 Oslo NULL NULL NULL NULL Kommune 01/01/1900 31/12/2099 2396 NULL NULL 1702 NULL NULL +2396 666 Privat eiet 3 Gutt Regning 2023-24 12462 9. årstrinn NULL NULL NULL NULL 301 Oslo NULL NULL NULL NULL Kommune 01/01/1900 31/12/2099 2396 NULL NULL 1702 NULL NULL +2396 144 Offentlig skole 18.6 Alle kjønn Lesing 2023-24 54263 5. årstrinn NULL NULL NULL NULL 301 Oslo NULL NULL NULL NULL Kommune 01/01/1900 31/12/2099 2396 NULL NULL 1702 NULL NULL + +Schema for databasen er gitt nedenfor: +{schema} + +Returner kun SQL spørringen og ingenting annet. Ikke pakk SQL spørringen i annen tekst, ikke engang backticks. + +Question: {question} +SQL Query: +""" \ No newline at end of file diff --git a/backend/improved_version/reply_template_engelsk.txt b/backend/improved_version/reply_template_engelsk.txt new file mode 100644 index 0000000..7ac0a26 --- /dev/null +++ b/backend/improved_version/reply_template_engelsk.txt @@ -0,0 +1,8 @@ +reply_template = """ +Based on the table schema below, question, sql query, and sql response, write a natural language response: +{schema} + +Question: {question} +SQL Query: {query} +SQL Response: {response} +""" \ No newline at end of file diff --git a/backend/improved_version/requirements.txt b/backend/improved_version/requirements.txt new file mode 100644 index 0000000..4a04b93 --- /dev/null +++ b/backend/improved_version/requirements.txt @@ -0,0 +1,46 @@ +aiohttp==3.9.5 +aiosignal==1.3.1 +annotated-types==0.6.0 +anyio==4.3.0 +attrs==23.2.0 +certifi==2024.2.2 +charset-normalizer==3.3.2 +dataclasses-json==0.6.4 +distro==1.9.0 +frozenlist==1.4.1 +greenlet==3.0.3 +h11==0.14.0 +httpcore==1.0.5 +httpx==0.27.0 +idna==3.7 +jsonpatch==1.33 +jsonpointer==2.4 +langchain==0.1.16 +langchain-community==0.0.33 +langchain-core==0.1.44 +langchain-openai==0.1.3 +langchain-text-splitters==0.0.1 +langsmith==0.1.49 +marshmallow==3.21.1 +multidict==6.0.5 +mypy-extensions==1.0.0 +numpy==1.26.4 +openai==1.23.1 +orjson==3.10.1 +packaging==23.2 +pydantic==2.7.0 +pydantic_core==2.18.1 +pyodbc==5.1.0 +python-dotenv==1.0.1 +PyYAML==6.0.1 +regex==2024.4.16 +requests==2.31.0 +sniffio==1.3.1 +SQLAlchemy==2.0.29 +tenacity==8.2.3 +tiktoken==0.6.0 +tqdm==4.66.2 +typing-inspect==0.9.0 +typing_extensions==4.11.0 +urllib3==2.2.1 +yarl==1.9.4 diff --git a/backend/improved_version/schema_db.txt b/backend/improved_version/schema_db.txt new file mode 100644 index 0000000..9f9ab43 --- /dev/null +++ b/backend/improved_version/schema_db.txt @@ -0,0 +1,1032 @@ + +CREATE TABLE [NESTORMetaData] ( + [ID] INTEGER NOT NULL IDENTITY(1,1), + [Versjon] INTEGER NULL, + [SistHentet] DATETIME NULL, + [System] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [SystemBaseURL] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [DataSource] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from NESTORMetaData table: +ID Versjon SistHentet System SystemBaseURL DataSource +1 3 2024-02-13 01:01:34 NESTOR-Sf NESTORTILDA01 https://nestor.statsforvalteren.no/SaksDetaljerSkjema.aspx?sakGlobalUnikId= GetNestordata +2 3 2024-02-13 01:00:33 NESTOR-Sf NESTORTILDA01 None GetPlanlagtTilsynOversiktSoFarThisYear +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_Barnehage] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_Barnehage table: +ID human_readable_table_name raw_data_row_ID dim_region_key +8722 13502 6309 1960 +8723 13502 6312 1960 +8742 13502 1822 2035 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_Barnevern] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_Barnevern table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 12276 226100 2466 +2 12276 226104 2466 +3 12276 228478 2466 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_Befolkning] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_Befolkning table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 13600 1679065 2123 +2 13600 1778009 2123 +3 13600 1891860 2123 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_BoligsosialtArbeid] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_BoligsosialtArbeid table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 08764 60755 2957 +2 08764 15333 2465 +3 08764 17965 1920 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_Folkehelse] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_Folkehelse table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 05782 182 2498 +2 05782 468 2498 +3 05782 713 2498 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_Grunnskole] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_Grunnskole table: +ID human_readable_table_name raw_data_row_ID dim_region_key +429 12255 1049 1921 +437 12235 13986 2411 +604 Elevundersøkelsen, mobbing 14078 1952 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_IntegreringOgBosetting] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_IntegreringOgBosetting table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 09817 7065587 2467 +2 09817 7192685 2467 +3 09817 8083085 2467 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_KlimaOgMiljoe] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_KlimaOgMiljoe table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 13144 42719 2441 +2 11789 549 2445 +3 13144 92689 2445 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_KommunalOkonomi] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_KommunalOkonomi table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 12362 456875 2066 +2 12362 41524 2066 +3 12362 41565 2066 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_KommunalPlanlegging] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_KommunalPlanlegging table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 13438 381523 2337 +2 05467 5970 2335 +3 12977 65458 2335 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_Kommunehelsetjenesten] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_Kommunehelsetjenesten table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 12005 43735 2466 +2 12005 61309 2466 +3 12229 94777 2466 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_Landbruk] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_Landbruk table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 06459 195472 2466 +2 Produksjons- og avløsertilskudd 33287 2466 +3 Produksjons- og avløsertilskudd 99355 2466 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_Omsorgstjenesten] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_Omsorgstjenesten table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 11924 215051 2466 +2 11924 215109 2466 +3 11924 219850 2466 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_Reindrift] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_Reindrift table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 13008 4291011 2233 +2 13008 4522915 2233 +3 13008 4561390 2233 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_SamfunnssikkerhetOgBeredskap] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_SamfunnssikkerhetOgBeredskap table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 Kommuneundersøkelsen 6798 1922 +2 Kommuneundersøkelsen 6911 2068 +3 Kommuneundersøkelsen 1365 2183 +*/ + + +CREATE TABLE [RawDataMappedToDimRegion_Sosialtjenesten] ( + [ID] BIGINT NOT NULL IDENTITY(1,1), + human_readable_table_name VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [raw_data_row_ID] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL +) + +/* +3 rows from RawDataMappedToDimRegion_Sosialtjenesten table: +ID human_readable_table_name raw_data_row_ID dim_region_key +1 13138 25142 2104 +2 13138 77695 2104 +3 12012 22622 2104 +*/ + + +CREATE TABLE [SSBKostragrupperMappedToKommuner] ( + kostragruppe VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [kostragruppeNavn] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + kommunenummer VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + kommunenavn VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [år] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from SSBKostragrupperMappedToKommuner table: +kostragruppe kostragruppeNavn kommunenummer kommunenavn år +EKG14 KOSTRA-gruppe 14 4620 Ulvik 2024 +EKG05 KOSTRA-gruppe 5 4622 Kvam 2024 +EKG09 KOSTRA-gruppe 9 4647 Sunnfjord 2024 +*/ + + +CREATE TABLE [SSBRegionEndringer] ( + [gammeltNr] VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [gammeltNavn] VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [nyttNr] VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [nyttNavn] VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [endringsDato] DATE NULL, + type VARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from SSBRegionEndringer table: +gammeltNr gammeltNavn nyttNr nyttNavn endringsDato type + +*/ + + +CREATE TABLE dim_agent ( + dim_agent_key INTEGER NOT NULL IDENTITY(1,1), + agentgruppe VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [kildesystemNavn] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [kildesystemId] INTEGER NULL, + CONSTRAINT [PK__dim_agen__59CB14882E2F06FF] PRIMARY KEY (dim_agent_key) +) + +/* +3 rows from dim_agent table: +dim_agent_key agentgruppe kildesystemNavn kildesystemId + +*/ + + +CREATE TABLE dim_category ( + dim_category_key INTEGER NOT NULL IDENTITY(1,1), + navn VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [kildesystemId] INTEGER NULL, + [kildesystemNavn] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + CONSTRAINT [PK__dim_cate__CD402BAEE0004E19] PRIMARY KEY (dim_category_key) +) + +/* +3 rows from dim_category table: +dim_category_key navn kildesystemId kildesystemNavn + +*/ + + +CREATE TABLE dim_dato ( + dim_dato_key INTEGER NOT NULL, + dato DATE NOT NULL, + dag TINYINT NOT NULL, + ukedag TINYINT NOT NULL, + [ukedagNavn] VARCHAR(10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [ukedagNavnKort] CHAR(3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [dagIAaret] SMALLINT NOT NULL, + ukenummer TINYINT NOT NULL, + maaned TINYINT NOT NULL, + maanedsnavn VARCHAR(10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [maanedsnavnKort] CHAR(3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + kvartal TINYINT NOT NULL, + [kvartalNavn] VARCHAR(10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + aar INTEGER NOT NULL, + periode CHAR(6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [maanedAar] CHAR(7) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [erHelg] BIT NOT NULL, + [erFridag] BIT NOT NULL, + CONSTRAINT [PK__dim_dato__8C8ACDC24A1CA02F] PRIMARY KEY (dim_dato_key) +) + +/* +3 rows from dim_dato table: +dim_dato_key dato dag ukedag ukedagNavn ukedagNavnKort dagIAaret ukenummer maaned maanedsnavn maanedsnavnKort kvartal kvartalNavn aar periode maanedAar erHelg erFridag +-1 1900-01-01 0 0 Ukjent -1 -1 0 0 Ukjent -1 0 Ukjent -1 Ukjent Ukjent True True +20100101 2010-01-01 1 5 fredag FRE 1 1 1 januar JAN 1 1. kvartal 2010 201001 2010JAN False False +20100102 2010-01-02 2 6 lørdag LØR 2 1 1 januar JAN 1 1. kvartal 2010 201001 2010JAN True False +*/ + + +CREATE TABLE dim_indikator ( + navn NVARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + maaleenhet NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + human_readable_table_name NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + eier NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + eierbeskrivelse NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [eierSistEndret] DATE NULL, + [fraDato] DATE NULL, + [tilDato] DATE NULL, + fagomraade NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + dim_indikator_key INTEGER NOT NULL IDENTITY(1,1), + [eierbeskrivelseURL] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + aktiv BIT NOT NULL DEFAULT ((1)) +) + +/* +3 rows from dim_indikator table: +navn maaleenhet human_readable_table_name eier eierbeskrivelse eierSistEndret fraDato tilDato fagomraade dim_indikator_key eierbeskrivelseURL aktiv +Hjemmebesøk av jordmor innen tre døgn etter hjemkomst prosent 11993 SSB Statistikken gir ei oversikt over kommunehelsetenesta. Statistikken omfattar opplysningar om fastleg 2023-06-15 None None Kommunehelsetjenesten 1036 https://www.ssb.no/helse/helsetjenester/statistikk/kommunehelsetenesta#om-statistikken True +Barn (antall) antall 11993 SSB Statistikken gir ei oversikt over kommunehelsetenesta. Statistikken omfattar opplysningar om fastleg 2023-06-15 None None Kommunehelsetjenesten 1037 https://www.ssb.no/helse/helsetjenester/statistikk/kommunehelsetenesta#om-statistikken True +Med i fritidsorganisasjon, ungdom (andel) andel Med i fritidsorganisasjon, ungdom (andel) KHS Andel ungdomsskoleelever som svarte «Ja, jeg er med nå» på spørsmålet: «Er du, eller har du tidliger 2023-10-12 None None Kommunehelsetjenesten 1038 https://khs.fhi.no/webview/index.jsp?headers=AAR&SOESslice=0&AARslice=2021_2021&stubs=GEOGRAFI&measu True +*/ + + +CREATE TABLE dim_orgenhet ( + dim_orgenhet_key INTEGER NOT NULL IDENTITY(1,1), + [kortNavn ] NCHAR(4) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + navn NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + CONSTRAINT [PK__dim_orge__B2B459671559494B] PRIMARY KEY (dim_orgenhet_key) +) + +/* +3 rows from dim_orgenhet table: +dim_orgenhet_key kortNavn navn +1 FMAA Fylkesmannen i Aust-Agder +2 FMBU Fylkesmannen i Buskerud +3 FMFI Fylkesmannen i Finnmark +*/ + + +CREATE TABLE dim_region ( + kommunenummer VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + kommunenavn NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + fylkesnummer VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + fylkesnavn NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + omraadeid NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + omraadenavn NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + type NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [fraDato] DATE NULL, + [tilDato] DATE NULL, + dim_region_key INTEGER NOT NULL IDENTITY(1,1), + bydelsnummer VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + bydelsnavn VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + kostragruppe INTEGER NULL, + strukturendring_sammenslaaing BIT NULL, + strukturendring_loesrivelse BIT NULL, + CONSTRAINT dim_region_key_pk PRIMARY KEY (dim_region_key) +) + +/* +3 rows from dim_region table: +kommunenummer kommunenavn fylkesnummer fylkesnavn omraadeid omraadenavn type fraDato tilDato dim_region_key bydelsnummer bydelsnavn kostragruppe strukturendring_sammenslaaing strukturendring_loesrivelse +None None None None EKG06 KOSTRA-gruppe 6 omrade 2020-01-01 2099-12-31 1686 None None None None None +None None None None EKG16 KOSTRA-gruppe 16 omrade 2020-01-01 2099-12-31 1687 None None None None None +None None None None EKG08 KOSTRA-gruppe 8 omrade 2020-01-01 2099-12-31 1688 None None None None None +*/ + + +CREATE TABLE dim_region2 ( + kommunenummer VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + kommunenavn NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + fylkesnummer VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + fylkesnavn NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + omraadeid NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + omraadenavn NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + type NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [fraDato] DATE NULL, + [tilDato] DATE NULL, + dim_region_key INTEGER NOT NULL IDENTITY(1,1), + bydelsnummer VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + bydelsnavn VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + kostragruppe INTEGER NULL, + strukturendring_sammenslaaing BIT NULL, + strukturendring_loesrivelse BIT NULL +) + +/* +3 rows from dim_region2 table: +kommunenummer kommunenavn fylkesnummer fylkesnavn omraadeid omraadenavn type fraDato tilDato dim_region_key bydelsnummer bydelsnavn kostragruppe strukturendring_sammenslaaing strukturendring_loesrivelse +None None None None EKG06 KOSTRA-gruppe 6 omrade 2020-01-01 2099-12-31 1686 None None None None None +None None None None EKG16 KOSTRA-gruppe 16 omrade 2020-01-01 2099-12-31 1687 None None None None None +None None None None EKG08 KOSTRA-gruppe 8 omrade 2020-01-01 2099-12-31 1688 None None None None None +*/ + + +CREATE TABLE dim_region_backup ( + kommunenummer VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + kommunenavn NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + fylkesnummer VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + fylkesnavn NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + omraadeid NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + omraadenavn NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + type NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [fraDato] DATE NULL, + [tilDato] DATE NULL, + dim_region_key INTEGER NOT NULL IDENTITY(1,1), + bydelsnummer VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + bydelsnavn VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + kostragruppe INTEGER NULL, + strukturendring_sammenslaaing BIT NULL, + strukturendring_loesrivelse BIT NULL +) + +/* +3 rows from dim_region_backup table: +kommunenummer kommunenavn fylkesnummer fylkesnavn omraadeid omraadenavn type fraDato tilDato dim_region_key bydelsnummer bydelsnavn kostragruppe strukturendring_sammenslaaing strukturendring_loesrivelse +None None None None None None Bydel 2020-01-01 2099-12-31 1744 030101 Gamle Oslo None None None +None None None None None None Bydel 2020-01-01 2099-12-31 1755 030102 Grünerløkka None None None +None None None None None None Bydel 2020-01-01 2099-12-31 1747 030103 Sagene None None None +*/ + + +CREATE TABLE dim_region_changes ( + gammelt_nummer VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + gammelt_navn VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + nytt_nummer VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + nytt_navn VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + endrings_dato DATE NULL, + strukturendring_sammenslaaing BIT NULL, + strukturendring_loesrivelse BIT NULL, + type VARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from dim_region_changes table: +gammelt_nummer gammelt_navn nytt_nummer nytt_navn endrings_dato strukturendring_sammenslaaing strukturendring_loesrivelse type +EKG01 KOSTRA-gruppe 1 None None None None None Kostragruppe +EKG02 KOSTRA-gruppe 2 None None None None None Kostragruppe +EKG03 KOSTRA-gruppe 3 None None None None None Kostragruppe +*/ + + +CREATE TABLE dim_sakstype ( + dim_sakstype_key INTEGER NOT NULL IDENTITY(1,1), + visningsnavn NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [kildesystemNavn] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [kildesystemId] INTEGER NOT NULL, + CONSTRAINT [PK__dim_saks__6500313DE7BD8973] PRIMARY KEY (dim_sakstype_key) +) + +/* +3 rows from dim_sakstype table: +dim_sakstype_key visningsnavn kildesystemNavn kildesystemId +1 Ukjent Ukjent -1 +2 Ukategorisert sakstype NESTOR 0 +3 Tilsynssak NESTOR 5 +*/ + + +CREATE TABLE dim_sakstype_underkategori ( + dim_sakstype_underkategori_key INTEGER NOT NULL IDENTITY(1,1), + [kildesystemId] INTEGER NULL, + [kildesystemNavn] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + beskrivelse NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + CONSTRAINT [PK__dim_saks__638A805889685671] PRIMARY KEY (dim_sakstype_underkategori_key) +) + +/* +3 rows from dim_sakstype_underkategori table: +dim_sakstype_underkategori_key kildesystemId kildesystemNavn beskrivelse +1 113 NESTOR Nødvendig helsehjelp +2 182 NESTOR Syketransport +3 212 NESTOR Helse/omsorg for øvrig +*/ + + +CREATE TABLE fact_barnehage_nokkeltall ( + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + eierform VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + barnehagestr VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + verdi NUMERIC(28, 10) NULL, + [år] INTEGER NOT NULL, + id INTEGER NOT NULL IDENTITY(1,1), + barnehagetype VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_barnehage_nokkeltall table: +dim_region_key dim_indikator_key eierform barnehagestr verdi år id barnehagetype +1994 692 None None None 2020 1 None +1796 692 None None None 2015 2 None +1837 692 None None 97.5000000000 2019 3 None +*/ + + +CREATE TABLE fact_barnevern_nokkeltall ( + id INTEGER NOT NULL IDENTITY(1,1), + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + barnevernstiltak VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + alder VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + verdi NUMERIC(28, 10) NULL, + [år] INTEGER NOT NULL +) + +/* +3 rows from fact_barnevern_nokkeltall table: +id dim_region_key dim_indikator_key barnevernstiltak alder verdi år +1 2493 146 Hjelpetiltak 0-17 år None 2018 +2 2316 146 Omsorgstiltak 0-17 år 434.0000000000 2019 +3 1727 146 Omsorgstiltak 0-22 år None 2019 +*/ + + +CREATE TABLE fact_befolkning_nokkeltall ( + [år] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + verdi NUMERIC(28, 10) NULL, + alder VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + id INTEGER NOT NULL IDENTITY(1,1), + arbeidsstyrkestatus VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [kjønn] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + tettbygd_eller_spredtbygd VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + familietype VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [utdanningsnivå] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [næringSN2007] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + sektor VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + fagutdanning VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [prioritertArbeidsstyrkestatus] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + innvandringskategori VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + alternativ VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [typeSosialKontakt] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + funksjonsproblem VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [typeOrganisasjon] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + ressurs VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + aktivitet VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + kvartal NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_befolkning_nokkeltall table: +år dim_region_key dim_indikator_key verdi alder id arbeidsstyrkestatus kjønn tettbygd_eller_spredtbygd familietype utdanningsnivå næringSN2007 sektor fagutdanning prioritertArbeidsstyrkestatus innvandringskategori alternativ typeSosialKontakt funksjonsproblem typeOrganisasjon ressurs aktivitet kvartal +2022 3034 492 0E-10 15-74 år 1 None None None None Uoppgitt 86-87 Helsetjenester inkl. pleie og omsorgstjenester i institusjon None None None None None None None None None None None +2015 2168 492 79.0000000000 Alle aldre 2 None None None None Helse- og sosialfaglig utdanning, i alt 86-87 Helsetjenester inkl. pleie og omsorgstjenester i institusjon None None None None None None None None None None None +2015 2168 492 79.0000000000 15-74 år 3 None None None None Helse- og sosialfaglig utdanning, i alt 86-87 Helsetjenester inkl. pleie og omsorgstjenester i institusjon None None None None None None None None None None None +*/ + + +CREATE TABLE fact_boligsosialt_arbeid_nokkeltall ( + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + verdi NUMERIC(28, 10) NULL, + [år] INTEGER NOT NULL, + id INTEGER NOT NULL IDENTITY(1,1) +) + +/* +3 rows from fact_boligsosialt_arbeid_nokkeltall table: +dim_region_key dim_indikator_key verdi år id +1957 797 None 2012 1 +2387 797 None 2008 2 +2428 797 None 2014 3 +*/ + + +CREATE TABLE fact_folkehelse_nokkeltall ( + id INTEGER NOT NULL IDENTITY(1,1), + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + verdi NUMERIC(28, 10) NULL, + [år] NVARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [kjønn] VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [årstrinn] VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [treningsOgMosjonsaktivitet] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + alder VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + levevane VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [typeSosialKontakt] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + friluftslivsaktivitet VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [typeBomiljø] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + familiefase VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + landsdel VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_folkehelse_nokkeltall table: +id dim_region_key dim_indikator_key verdi år kjønn årstrinn treningsOgMosjonsaktivitet alder levevane typeSosialKontakt friluftslivsaktivitet typeBomiljø familiefase landsdel +1 2498 562 35.0000000000 2013 Menn None Spilt volleyball 16-24 år None None None None None None +2 2498 562 None 2013 Kvinner None Drevet med ridning 45-66 år None None None None None None +3 2498 562 None 1997 Begge kjønn None Trent spinning, på tredemølle eller med treningsapparat Alder i alt None None None None None None +*/ + + +CREATE TABLE fact_grunnskole_nokkeltall ( + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + eierform VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + verdi NUMERIC(28, 10) NULL, + [Kjønn] VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [Prøve] VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [år] VARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + id INTEGER NOT NULL IDENTITY(1,1), + [Årstrinn] VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [fullføringsgrad] VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + alder VARCHAR(1000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + funksjon VARCHAR(3000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [ForeldrenesUtdanningsnivaa] VARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_grunnskole_nokkeltall table: +dim_region_key dim_indikator_key eierform verdi Kjønn Prøve år id Årstrinn fullføringsgrad alder funksjon ForeldrenesUtdanningsnivaa +2089 144 Privat eiet None Alle kjønn Lesing 2017-18 2363 5. årstrinn None None None None +2397 144 Alle eierformer None Gutt Regning 2020-21 2364 5. årstrinn None None None None +2387 144 Privat eiet None Jente Engelsk 2021-22 2365 5. årstrinn None None None None +*/ + + +CREATE TABLE fact_integrering_nokkeltall ( + [år] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + verdi NUMERIC(28, 10) NULL, + innvandringskategori VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + landbakgrunn VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + id INTEGER NOT NULL IDENTITY(1,1), + bosetting VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [spørsmål] NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_integrering_nokkeltall table: +år dim_region_key dim_indikator_key verdi innvandringskategori landbakgrunn id bosetting spørsmål +2017 1853 271 0E-10 Norskfødte med innvandrerforeldre Østerrike 2345 None None +2023 2355 271 0E-10 Norskfødte med innvandrerforeldre Andorra 2346 None None +2022 1841 271 0E-10 Innvandrere Fiji 2347 None None +*/ + + +CREATE TABLE fact_klima_miljo_nokkeltall ( + id INTEGER NOT NULL IDENTITY(1,1), + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + [år] NVARCHAR(2000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + verdi NUMERIC(20, 10) NULL, + dyr VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [årsak] VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [verneformål] NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + elv NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + bruk NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + sektor NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + arealbrukskategori NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_klima_miljo_nokkeltall table: +id dim_region_key dim_indikator_key år verdi dyr årsak verneformål elv bruk sektor arealbrukskategori +1 2498 909 2018 0E-10 None None None Torvikelva (Gjemnes) Fisk sleppt ut att None None +2 2498 909 2016 393423.0000000000 None None None Elver i alt Avliva fisk None None +3 2498 909 2016 1506.0000000000 None None None Lyngdalselva (Lygna) Avliva fisk None None +*/ + + +CREATE TABLE fact_kommunal_okonomi_nokkeltall ( + id INTEGER NOT NULL IDENTITY(1,1), + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + verdi NUMERIC(28, 10) NULL, + [år] INTEGER NOT NULL, + regnskapsbegrep VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + funksjon VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + art VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [nøkkeltall] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + kategori VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + tjeneste VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_kommunal_okonomi_nokkeltall table: +id dim_region_key dim_indikator_key verdi år regnskapsbegrep funksjon art nøkkeltall kategori tjeneste +1 1993 641 None 2017 None 233 Annet forebyggende helsearbeid Korrigerte brutto driftsutgifter på funksjon/tjenesteområde Beløp (1000 kr) None None +2 1800 641 1259.0000000000 2020 None 232 Helsestasjons- og skolehelsetjeneste Brutto driftsutgifter på funksjon/tjenesteområde Beløp (1000 kr) None None +3 2019 641 237.0000000000 2021 None 233 Annet forebyggende helsearbeid Brutto driftsutgifter på funksjon/tjenesteområde Beløp per innbygger (kr) None None +*/ + + +CREATE TABLE fact_kommunal_planlegging_nokkeltall ( + [år] INTEGER NOT NULL, + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + verdi NUMERIC(28, 10) NULL, + id INTEGER NOT NULL IDENTITY(1,1), + [behandlingsinstansOgBehandlingsresultat] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [reguleringsplanerSomDetKlagesPaa] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [årsakTilKlage] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_kommunal_planlegging_nokkeltall table: +år dim_region_key dim_indikator_key verdi id behandlingsinstansOgBehandlingsresultat reguleringsplanerSomDetKlagesPaa årsakTilKlage +2016 2166 672 None 1 Klager som ble mottatt i kommunen Klager på områdereguleringer None +2017 2231 672 None 2 Klager som kommunen gjorde vedtak på Klager på reguleringsplaner i alt None +2022 2495 672 None 3 Kommunale vedtak som ble omgjort hos statsforvalteren Klager på reguleringsplaner i alt None +*/ + + +CREATE TABLE fact_kommunehelsetjenesten_nokkeltall ( + id INTEGER NOT NULL IDENTITY(1,1), + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + [år] VARCHAR(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + verdi NUMERIC(28, 10) NULL, + funksjon VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + avtaleform VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [sosioøkonomiskeRessurser] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [helseundersøkelser_helsekonsultasjoner] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_kommunehelsetjenesten_nokkeltall table: +id dim_region_key dim_indikator_key år verdi funksjon avtaleform sosioøkonomiskeRessurser helseundersøkelser_helsekonsultasjoner +1 2442 484 2016 2066.0000000000 None None None None +2 1711 484 2021 962425.0000000000 None None None None +3 1784 484 2015 2271.0000000000 None None None None +*/ + + +CREATE TABLE fact_landbruk_nokkeltall ( + id INTEGER NOT NULL IDENTITY(1,1), + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + husdyrslag VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + verdi NUMERIC(28, 10) NULL, + [år] NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + sortiment VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_landbruk_nokkeltall table: +id dim_region_key dim_indikator_key husdyrslag verdi år sortiment +1 2924 771 None 0E-10 2020 Lauv +2 2924 771 None 0E-10 2017 Ved til brensel +3 2925 771 None 0E-10 2018 Lauv +*/ + + +CREATE TABLE fact_nestor_planlagt_tilsyn_oversikt_so_far_this_year ( + [PlanArId ] INTEGER NULL, + [EmbeteSortNr] INTEGER NULL, + dim_orgenhet_key INTEGER NOT NULL, + [SaksomraadeId] NVARCHAR(1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [Saksomraade] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [TjenesteKategoriId] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [TjenesteKategori] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [Resultatmaal] INTEGER NULL, + [SumPlanlagt] INTEGER NULL, + [SumGjennomfort] INTEGER NULL, + CONSTRAINT [FK_fact_nestor_planlagt_tilsyn_oversikt_so_far_this_year__to__dim_orgenhet] FOREIGN KEY(dim_orgenhet_key) REFERENCES dim_orgenhet (dim_orgenhet_key) ON DELETE CASCADE ON UPDATE CASCADE +) + +/* +3 rows from fact_nestor_planlagt_tilsyn_oversikt_so_far_this_year table: +PlanArId EmbeteSortNr dim_orgenhet_key SaksomraadeId Saksomraade TjenesteKategoriId TjenesteKategori Resultatmaal SumPlanlagt SumGjennomfort +2024 20 20 H Helse/omsorg KHELSEOMSORG Kommunale helse- og omsorgstjenester 275 273 0 +2024 20 20 H Helse/omsorg SPES-HTJ Spesialisthelsetjenester 65 64 0 +2024 20 20 S Sosial NAV Sosiale tjenester i Nav 90 0 0 +*/ + + +CREATE TABLE fact_nestor_sakstall ( + [sakGuid ] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [rekkefoelgeEllerJpNr] INTEGER NULL, + [saksOmraadeId] NVARCHAR(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [saksOmraade] NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + dim_sakstype_key INTEGER NOT NULL, + dim_sakstype_underkategori_key INTEGER NOT NULL, + dim_orgenhet_key INTEGER NOT NULL, + [avdTeam] NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [saksNrEphorteAar] INTEGER NULL, + [saksNrEphorteLoepeNr] INTEGER NULL, + [resultatAar] INTEGER NULL, + [erNrpSak] BIT NULL, + [sbTidAntallDager] INTEGER NULL, + [harLovBruddEndaIkkeRettet] BIT NULL, + [erEnRestanse] BIT NULL, + [ephorteSakUrl] NVARCHAR(2083) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [antallSaker] INTEGER NULL, + [initialtOpprettet] INTEGER NOT NULL, + [Inndato] INTEGER NOT NULL, + [utDato] INTEGER NOT NULL, + [sistEndret] INTEGER NOT NULL, + [AntallBeboereTotalt] INTEGER NULL, + [AntallTilbudtSamtaler] INTEGER NULL, + [AntallSamtalerTatt] INTEGER NULL, + [sistHentetFraNESTOR] DATETIME NULL, + [ErLokaltAvklart] BIT NULL, + [Subkategori] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + CONSTRAINT [FK__fact_nest__initi__1EA48E88] FOREIGN KEY([initialtOpprettet]) REFERENCES dim_dato (dim_dato_key), + CONSTRAINT [FK__fact_nest__Innda__1F98B2C1] FOREIGN KEY([Inndato]) REFERENCES dim_dato (dim_dato_key), + CONSTRAINT [FK__fact_nest__sistE__1DB06A4F] FOREIGN KEY([sistEndret]) REFERENCES dim_dato (dim_dato_key), + CONSTRAINT [FK__fact_nest__utDat__208CD6FA] FOREIGN KEY([utDato]) REFERENCES dim_dato (dim_dato_key), + CONSTRAINT [FK_fact_nestor_sakstall__to__dim_orgenhet] FOREIGN KEY(dim_orgenhet_key) REFERENCES dim_orgenhet (dim_orgenhet_key) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT [FK_fact_nestor_sakstall__to__dim_sakstype] FOREIGN KEY(dim_sakstype_key) REFERENCES dim_sakstype (dim_sakstype_key) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT [FK_fact_nestor_sakstall__to__dim_sakstype_underkategori] FOREIGN KEY(dim_sakstype_underkategori_key) REFERENCES dim_sakstype_underkategori (dim_sakstype_underkategori_key) ON DELETE CASCADE ON UPDATE CASCADE +) + +/* +3 rows from fact_nestor_sakstall table: +sakGuid rekkefoelgeEllerJpNr saksOmraadeId saksOmraade dim_sakstype_key dim_sakstype_underkategori_key dim_orgenhet_key avdTeam saksNrEphorteAar saksNrEphorteLoepeNr resultatAar erNrpSak sbTidAntallDager harLovBruddEndaIkkeRettet erEnRestanse ephorteSakUrl antallSaker initialtOpprettet Inndato utDato sistEndret AntallBeboereTotalt AntallTilbudtSamtaler AntallSamtalerTatt sistHentetFraNESTOR ErLokaltAvklart Subkategori +59d78967-0a84-4369-ba48-2d82cca0f5f3 1 H Helse/omsorg 7 19 20 Helse og omsorg 2020 9743 None False 1170 None False https://fmeph6web1.fylkesmannen.local/ElementsSFIN/rm/FMIN_PROD/locator?SHOW=SA&SA_SAAR=2020&SA_SEKN 1 20200910 20201130 -1 20200910 None None None 2024-02-13 01:01:34 False Ny gjennomgang/kontroll etter 3 md. +05bdb228-22d8-49dd-8f29-225c2d93359d 1 H Helse/omsorg 7 19 20 Helse og omsorg 2021 2330 None False 987 None False https://fmeph6web1.fylkesmannen.local/ElementsSFIN/rm/FMIN_PROD/locator?SHOW=SA&SA_SAAR=2021&SA_SEKN 1 20210224 20210601 -1 20210224 None None None 2024-02-13 01:01:34 False Ny gjennomgang/kontroll etter 3 md. +23f204fe-1b20-47e3-bc7c-71548c1d8654 1 H Helse/omsorg 7 19 20 Helse og omsorg 2023 2191 None False 280 None True https://fmeph6web1.fylkesmannen.local/ElementsSFIN/rm/FMIN_PROD/locator?SHOW=SA&SA_SAAR=2023&SA_SEKN 1 20230219 20230509 -1 20230219 None None None 2024-02-13 01:01:34 False Ny gjennomgang/kontroll etter 3 md. +*/ + + +CREATE TABLE fact_nilex_sakstall ( + dim_orgenhet_key INTEGER NOT NULL, + dim_agent_key INTEGER NOT NULL, + dim_sakstype_key INTEGER NOT NULL, + dim_category_key INTEGER NOT NULL, + [Type] VARCHAR(800) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [Version] INTEGER NULL, + [CreatedDate] INTEGER NULL, + [UpdatedDate] INTEGER NULL, + [BaseStatus] INTEGER NULL, + [Priority] VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [IsMajor] BIT NULL, + [BaseEntitySource] VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [ReferenceNo] VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [Resolution] VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [IsSecurity] BIT NULL, + [FormId] VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [OnBehalfOf] BIT NULL, + [BaseEntityStatus] VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [SspFormId] VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [SlaSummary] INTEGER NULL, + [MainWayPoint] INTEGER NULL, + [Urgency] VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [Impact] VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [AssignedDate] INTEGER NULL, + [ServiceEntitiesCount] INTEGER NULL, + [CiCount] INTEGER NULL, + [TaskCount] INTEGER NULL, + [SlaStartTimeCounter] INTEGER NULL, + [EmailOrigin] VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [IsClosedFromSsp] BIT NULL, + [MarkedForDelete] BIT NULL, + [EntityType] VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + CONSTRAINT [FK__fact_nile__Assig__29221CFB] FOREIGN KEY([AssignedDate]) REFERENCES dim_dato (dim_dato_key), + CONSTRAINT [FK__fact_nile__Creat__2B0A656D] FOREIGN KEY([CreatedDate]) REFERENCES dim_dato (dim_dato_key), + CONSTRAINT [FK__fact_nile__SlaSt__2A164134] FOREIGN KEY([SlaStartTimeCounter]) REFERENCES dim_dato (dim_dato_key), + CONSTRAINT [FK__fact_nile__Updat__2645B050] FOREIGN KEY([UpdatedDate]) REFERENCES dim_dato (dim_dato_key), + CONSTRAINT [FK_fact_nilex_sakstall__to__dim_agent] FOREIGN KEY(dim_agent_key) REFERENCES dim_agent (dim_agent_key) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT [FK_fact_nilex_sakstall__to__dim_category] FOREIGN KEY(dim_category_key) REFERENCES dim_category (dim_category_key) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT [FK_fact_nilex_sakstall__to__dim_orgenhet] FOREIGN KEY(dim_orgenhet_key) REFERENCES dim_orgenhet (dim_orgenhet_key) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT [FK_fact_nilex_sakstall__to__sakstype] FOREIGN KEY(dim_sakstype_key) REFERENCES dim_sakstype (dim_sakstype_key) ON DELETE CASCADE ON UPDATE CASCADE +) + +/* +3 rows from fact_nilex_sakstall table: +dim_orgenhet_key dim_agent_key dim_sakstype_key dim_category_key Type Version CreatedDate UpdatedDate BaseStatus Priority IsMajor BaseEntitySource ReferenceNo Resolution IsSecurity FormId OnBehalfOf BaseEntityStatus SspFormId SlaSummary MainWayPoint Urgency Impact AssignedDate ServiceEntitiesCount CiCount TaskCount SlaStartTimeCounter EmailOrigin IsClosedFromSsp MarkedForDelete EntityType + +*/ + + +CREATE TABLE fact_omsorgstjenesten_nokkeltall ( + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + verdi NUMERIC(28, 10) NULL, + [år] INTEGER NOT NULL, + id INTEGER NOT NULL IDENTITY(1,1), + alder VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [typeSykelighet] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [kjønn] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + tjenestetype VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + utdanning VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + tjenestegrupper VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_omsorgstjenesten_nokkeltall table: +dim_region_key dim_indikator_key verdi år id alder typeSykelighet kjønn tjenestetype utdanning tjenestegrupper +1840 494 None 2016 1 None None None None Hjelpepleier None +1840 494 65.1700000000 2022 2 None None None None Hjelpepleier None +2180 494 4.2700000000 2021 3 None None None None Geriatrisk sykepleier None +*/ + + +CREATE TABLE fact_reindrift_nokkeltall ( + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + [søknadstype] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + vedtakstype VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + verdi NUMERIC(28, 10) NULL, + [år] INTEGER NOT NULL, + id INTEGER NOT NULL IDENTITY(1,1), + innsigelsesmyndighet NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [begrunnelserBruktForInnsigelser] NVARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_reindrift_nokkeltall table: +dim_region_key dim_indikator_key søknadstype vedtakstype verdi år id innsigelsesmyndighet begrunnelserBruktForInnsigelser +1857 810 None None 0E-10 2021 1 Fylkeskommunen Barn og unges oppvekstforhold +1975 810 None None 0E-10 2018 2 Riksantikvaren Forurensning eller støy +2401 810 None None 0E-10 2021 3 Kystverket Drikkevann +*/ + + +CREATE TABLE fact_samfunnssikkerhet_og_beredskap ( + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + verdi INTEGER NULL, + id INTEGER NOT NULL IDENTITY(1,1), + [år] VARCHAR(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [samletStatus] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [gjennomførtÅr] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_samfunnssikkerhet_og_beredskap table: +dim_region_key dim_indikator_key verdi id år samletStatus gjennomførtÅr +1866 465 None 1 2021 Distribuert Ikke oppgitt +1878 465 1 2 2018 Gjennomført 2017 +1806 465 None 3 2023 Distribuert Ikke oppgitt +*/ + + +CREATE TABLE fact_sosialtjenesten_nokkeltall ( + id INTEGER NOT NULL IDENTITY(1,1), + dim_region_key INTEGER NOT NULL, + dim_indikator_key INTEGER NOT NULL, + [år] INTEGER NOT NULL, + verdi NUMERIC(28, 10) NULL, + bygningstype VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [bygningsår] VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + funksjon VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL +) + +/* +3 rows from fact_sosialtjenesten_nokkeltall table: +id dim_region_key dim_indikator_key år verdi bygningstype bygningsår funksjon +5325 2468 735 2018 115.0000000000 None None None +5326 1719 597 2020 None None None 731 Fylkesveiferjer +5327 1712 597 2019 0E-10 None None 733 Transportordninger for funksjonshemmede +*/ + + +CREATE TABLE validation_results ( + test_name VARCHAR(2000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + is_error BIT NOT NULL, + error_message VARCHAR(2000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + validation_done_utc_date_time DATETIME NOT NULL, + test_type VARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL +) + +/* +3 rows from validation_results table: +test_name is_error error_message validation_done_utc_date_time test_type +Test for null values in år in fact_tables False 2024-01-05 18:19:34.470000 fact_tables +Test for duplicate values in fact_tables False 2024-01-05 18:28:00.313000 fact_tables +Test for dim_indikator_keys in fact_tables with only null values in verdi False 2024-01-05 18:19:23.690000 fact_tables +*/ \ No newline at end of file diff --git a/backend/improved_version/schema_reflect.txt b/backend/improved_version/schema_reflect.txt new file mode 100644 index 0000000..e69de29 diff --git a/backend/service/backendai.py b/backend/service/backendai.py index e8100ca..a9bfbc9 100644 --- a/backend/service/backendai.py +++ b/backend/service/backendai.py @@ -63,6 +63,7 @@ #user_query = "Hvor mange menn røyker?" #user_query = "Hvor mange barn 1-2 år er i barnehage i forhold til innbyggere 1-2 år i Agder?" #svar = 82.5% #user_query = "Hvor mange barn 1-2 år er i barnehage i forhold til innbyggere 1-2 år i Agder i år 2023?" #år 2023 er bait, er ikke med i datasettet -user_query = "Hvor mange barn 1-2 år er i barnehage i forhold til innbyggere 1-2 år i Agder i år 2020?" # answer = 81% +#user_query = "Hvor mange barn 1-2 år er i barnehage i forhold til innbyggere 1-2 år i Agder i år 2020?" # answer = 81% +user_query = "Hvor mange elever er det på alle trinn i Oslo i år 2023?" agent_executor.invoke(prompt.format_prompt(question = user_query)) \ No newline at end of file