Så fungerar databaserna

Du får utan kostnad ladda ner obegränsade mängder data från Konjunkturinstitutets webbplats. Du får även bearbeta, kopiera och sprida datamaterialet vidare till andra användare, också för kommersiell användning. Detta gäller både manuell hämtning och hämtning via databasens API.

Är tabellen större än 1000 rader och 30 kolumner visas inte hela tabellen på skärmen, men du kan ladda ner den som Excel-fil eller i annat format. Gränsen för nedladdning är 250 000 celler.

Sök och hämta data enkelt

Databasernas användargränssnitt är utformat för att vara lätt att använda. Du kan snabbt söka efter den data du är intresserad av, göra egna inställningar för hur tabeller ska visas, och ladda ned resultatet.

En praktisk funktion är att du kan spara din sökning. Det innebär att du nästa gång du öppnar databasen får direkt tillgång till uppdaterad data utan att behöva göra om samma sökning igen. På så sätt sparar du tid, särskilt när nya prognoser publiceras (se exempel i bild 3 ovan).

För de flesta användare räcker det med dessa funktioner.

För dig som vill automatisera

För dig som vill integrera datainsamlingen i ett eget analysflöde eller ett program erbjuder Konjunkturinstitutets databas ett kraftfullt verktyg: ett API (Application Programming Interface). Med hjälp av API:et kan du skriva skript eller program som automatiskt hämtar uppdaterad data från databasen. Du kan själv bestämma exakt vilken information du vill hämta, till exempel genom att ange specifika variabler, tidsperioder eller format.

Det är också möjligt att koppla dataflödet direkt till din analysmiljö, som till exempel Jupyter Notebook, RStudio eller Excel via Power Query. På så sätt blir det enkelt att schemalägga hämtningar och se till att dina modeller eller rapporter alltid använder den senaste statistiken – utan att du behöver öppna gränssnittet manuellt varje gång.

API:et är särskilt användbart när du upprepat behöver hämta samma typ av data, när du vill göra större datauttag som annars tar mycket tid att ladda ned manuellt, eller när du vill bygga automatiska uppdateringar i ett analysverktyg, ett beslutsstöd eller en webbtjänst.

För att komma igång behöver du ha grundläggande programmeringskunskaper, gärna i Python eller R som är vanliga språk inom statistik och dataanalys. Det innebär till exempel att du bör veta hur man gör API-anrop via HTTP, hur man läser och tolkar svar i format som JSON eller CSV, samt hur man bearbetar tabellstrukturerad data

Det finns exempelkod tillgänglig både i Python och R, som du enkelt kan kopiera och köra i din egen miljö. Exempelkoden visar hur du ansluter till API:et, hämtar ett urval av data och läser in det i din arbetsmiljö. Exemplet innehåller också ett enkelt diagram som visualiserar den hämtade statistiken, vilket ger en snabb överblick över utvecklingen i datan. Med några enkla anpassningar kan du sedan bygga vidare och utforma ett flöde som passar dina behov.

#_____________________________________________________________________________________
#
# Exempelkod för att hämta data från prognosdatabasen (prognos.konj.se)
# Example code for fetching data from the forecast database (prognos.konj.se)
#
# Du behöver installera pyjstat, skriv följande i kommandotolken
# You need to install pyjstat, in the command prompt write the following
#
# py -m pip install pyjstat
#_____________________________________________________________________________________

#_____________________________________________________________________________________

# Importera paket
# Import package
from pyjstat import pyjstat
import requests
from matplotlib import pyplot as plt
import pandas as pd

#_____________________________________________________________________________________

# Hämta årlig data från prognosdatabasen, efter att en tabell har genererats
# från databasen, är URL:en och den faktiska JSON-förfrågan belägna längst ner

# Fetch annual data from the forecast database, after a table has been generated
# from the database, the URL and the actual JSON query are located at the bottom.

# Ange URL:en
# Input the URL
POST_URL = 'https://prognos.konj.se:443/PxWeb/api/v1/sv/SenastePrognosen/f09_bnpkonsumtioninvesteringarochutrikeshandel/F0901.px'

# Ange JSON-förfrågan
# Input the JSON query
payload = {
  "query": [
    {
      "code": "variabel",
      "selection": {
        "filter": "item",
        "values": [
          "F0901Nbnpmp"
        ]
      }
    },
    {
      "code": "enhet",
      "selection": {
        "filter": "item",
        "values": [
          "F"
        ]
      }
    },
    {
      "code": "period",
      "selection": {
        "filter": "item",
        "values": [
          "2007",
          "2008",
          "2009",
          "2010",
          "2011",
          "2012",
          "2013",
          "2014",
          "2015",
          "2016",
          "2017",
          "2018",
          "2019",
          "2020",
          "2021",
          "2022",
          "2023",
          "2024",
          "2025",
          "2026",
          "2027"
        ]
      }
    }
  ],
  "response": {
    # Observera att 'format':'px' har ändrats till JSON-stat
    # Note that 'format':'px' has been changed to JSON-stat
    "format": "json-stat"
  }
}

#_____________________________________________________________________________________

# Ladda data
# Load data

response = requests.post(POST_URL,json = payload)
print(response)

dataset = pyjstat.Dataset.read(response.text)
df = dataset.write('dataframe')
print(df.head())

# _____________________________________________________________________________________

# Skapa graf
# Create graph

# Ändra formatet på perioden
# Change the format of the period
df["period"] = pd.to_datetime(df["period"]) #, format = "%YM%m")

# Ändra enheten från miljoner SEK till miljarder SEK för en bättre utseende i den provisoriska grafen
# Change the unit from millions SEK to billions SEK for a better appearance in the sample graph
df["value"] = df["value"] / 1000

# Skapa graf
# Create graph
plt.figure(figsize = (8,6),dpi=100)
plt.plot(df["period"],df["value"])

# Ändra bakgrundsfärg för prognosår som börjar från 2024
# Change background color for forecast years starting from 2024
plt.axvspan('2024', '2027', color='Grey', alpha=0.4, label='Highlight')
plt.figtext(0.775,0.5, 'Prognos')
plt.grid(axis = 'y', color = "lightgrey", alpha=0.3)

# Lägg till titel och visa diagramet
# Add title and show the graph

plt.title("BNP Sverige, mdkr, fasta priser \n" "2024-2027 = senaste prognosen")
plt.show()

#_____________________________________________________________________________________
#
# Exempelkod för att hämta data från statistikdabasen (statistik.konj.se)
# Example code for fetching data from the forecast database (statistik.konj.se)
#
# Du behöver installera pyjstat, skriv följande i kommandotolken
# You need to install pyjstat, in the command prompt write the following
#
# py -m pip install pyjstat
#_____________________________________________________________________________________

#_____________________________________________________________________________________

# Importera paket
# Import package
from pyjstat import pyjstat
import requests
from matplotlib import pyplot as plt
import pandas as pd

#_____________________________________________________________________________________

# Hämta månadsdata för hela perioden för variabeln Barometerindikatorn, efter att en tabell har genererats
# från databasen, är URL:en och den faktiska JSON-förfrågan belägna längst ner

# Fetch monthly data for the entire period for the variable Barometerindicator, after a table has been generated
# from the database, the URL and the actual JSON query are located at the bottom.

# Ange URL:en
# Input the URL
POST_URL = 'https://statistik.konj.se:443/PxWeb/api/v1/sv/KonjBar/indikatorer/Indikatorm.px'

# Ange JSON-förfrågan
# Input the JSON query
payload = {
  "query": [
    {
      "code": "Indikator",
      "selection": {
        "filter": "item",
        "values": [
          "KIFI"
        ]
      }
    }
  ],
  "response": {
     # Observera att 'format':'px' har ändrats till JSON-stat
     # Note that 'format':'px' has been changed to JSON-stat
     "format": "json-stat"
  }
}

#_____________________________________________________________________________________

# Ladda data
# Load data

response = requests.post(POST_URL,json = payload)
print(response)

dataset = pyjstat.Dataset.read(response.text)
df = dataset.write('dataframe')
print(df.head())

# _____________________________________________________________________________________

# Skapa graf
# Create graph

# Ändra formatet på perioden
# Change the format of the period

df["Period"] = pd.to_datetime(df["Period"], format = "%YM%m")
df.set_index("Period",inplace=True)

# Skapa graf
# Create graph
plt.figure(figsize = (8,6),dpi=100)
plt.plot(df[["value"]])
plt.grid(axis = 'y', color = "lightgrey", alpha=0.3)

# Lägg till titel och visa diagramet
# Add title and show the graph
plt.title("Barometerindikatorn, 1996-2024, \n" "månatlig frekvens")
plt.show()

#_____________________________________________________________________________________
#
# Exempelkod för att hämta data från statistikdabasen (statistik.konj.se) och kombinera
# ihop serier från olika uttag
# Example code for fetching data from the statistical database (statistik.konj.se) and
# combining series from different queries.
#
# Du behöver installera pyjstat, skriv följande i kommandotolken
# You need to install pyjstat, in the command prompt write the following
#
# py -m pip install pyjstat
#_____________________________________________________________________________________

#_____________________________________________________________________________________

from pyjstat import pyjstat
import requests
from matplotlib import pyplot as plt
import pandas as pd

# Hämta månadsdata för byggindustri, efter att en tabell har genererats
# från databasen, är URL:en och den faktiska JSON-förfrågan belägna längst ner

# Fetch monthly data for construction industry, after a table has been generated
# from the database, the URL and the actual JSON query are located at the bottom.

# Ange URL:en
# Input the URL
POST_URL_BYGG = 'https://statistik.konj.se:443/PxWeb/api/v1/sv/KonjBar/ftgmanad/Barboam.px'

# Ange JSON-förfrågan
# Input the JSON query
bygg_payload = {
  "query": [
    {
      "code": "Bransch (SNI 2007)",
      "selection": {
        "filter": "item",
        "values": [
          "BBYG"
        ]
      }
    },
    {
      "code": "Fråga",
      "selection": {
        "filter": "item",
        "values": [
          "106"
        ]
      }
    },
    {
      "code": "Serie",
      "selection": {
        "filter": "item",
        "values": [
          "S"
        ]
      }
    }
  ],
  "response": {
     # Observera att 'format':'px' har ändrats till JSON-stat
     # Note that 'format':'px' has been changed to JSON-stat
    "format": "json-stat"
  }
}

# Ladda data, mm
# Load data, etc
response_bygg = requests.post(POST_URL_BYGG,json = bygg_payload)
print(response_bygg)
dataset_bygg = pyjstat.Dataset.read(response_bygg.text)
df_bygg = dataset_bygg.write('dataframe')
df_bygg["Period"] = pd.to_datetime(df_bygg["Period"], format = "%YM%m")

#_____________________________________________________________________________________

# Återupprepa datauttaget för ytterligare tre serier
# Repeat the data extraction for three additional series

# Handeln
# Trade

POST_URL_HANDEL = 'https://statistik.konj.se:443/PxWeb/api/v1/sv/KonjBar/ftgmanad/Barhanm.px'

handel_payload = {
  "query": [
    {
      "code": "Bransch (SNI 2007)",
      "selection": {
        "filter": "item",
        "values": [
          "BHAN"
        ]
      }
    },
    {
      "code": "Fråga",
      "selection": {
        "filter": "item",
        "values": [
          "104"
        ]
      }
    },
    {
      "code": "Serie",
      "selection": {
        "filter": "item",
        "values": [
          "S"
        ]
      }
    }
  ],
  "response": {
    "format": "json-stat"
  }
}

response_handel = requests.post(POST_URL_HANDEL,json = handel_payload)
print(response_handel)
dataset_handel = pyjstat.Dataset.read(response_handel.text)
df_handel = dataset_handel.write('dataframe')
df_handel["Period"] = pd.to_datetime(df_handel["Period"], format = "%YM%m")

# Tillverkningsindustri
# Manufacturing industry

POST_URL_TILLV = 'https://statistik.konj.se:443/PxWeb/api/v1/sv/KonjBar/ftgmanad/Barindm.px'

payload_tillv = {
  "query": [
    {
      "code": "Bransch (SNI 2007)",
      "selection": {
        "filter": "item",
        "values": [
          "BTVI"
        ]
      }
    },
    {
      "code": "Fråga",
      "selection": {
        "filter": "item",
        "values": [
          "107"
        ]
      }
    },
    {
      "code": "Serie",
      "selection": {
        "filter": "item",
        "values": [
          "S"
        ]
      }
    }
  ],
  "response": {
    "format": "json-stat" # <- Notera att jag ändrat från px till json-stat för att kunna läsa in
  }
}

response_tillv = requests.post(POST_URL_TILLV,json = payload_tillv)
print(response_tillv)
dataset_tillv = pyjstat.Dataset.read(response_tillv.text)
df_tillv = dataset_tillv.write('dataframe')
print(df_tillv.head())
df_tillv["Period"] = pd.to_datetime(df_tillv["Period"], format = "%YM%m")

# Tjänstesektorn
# Service sector

POST_URL_TJANST = 'https://statistik.konj.se:443/PxWeb/api/v1/sv/KonjBar/ftgmanad/Bartjam.px'


payload_tjanst = {
  "query": [
    {
      "code": "Bransch (SNI 2007)",
      "selection": {
        "filter": "item",
        "values": [
          "BTJA"
        ]
      }
    },
    {
      "code": "Fråga",
      "selection": {
        "filter": "item",
        "values": [
          "105"
        ]
      }
    },
    {
      "code": "Serie",
      "selection": {
        "filter": "item",
        "values": [
          "S"
        ]
      }
    }
  ],
  "response": {
    "format": "json-stat" # <- Notera att jag ändrat från px till json-stat för att kunna läsa in
  }
}

response_tjanst = requests.post(POST_URL_TJANST,json = payload_tjanst)
print(response_tillv)
dataset_tjanst = pyjstat.Dataset.read(response_tjanst.text)
df_tjanst = dataset_tjanst.write('dataframe')
print(df_tjanst.head())
df_tjanst["Period"] = pd.to_datetime(df_tjanst["Period"], format = "%YM%m")

# _____________________________________________________________________________________

# Skapa graf
# Create graph

plt.figure(figsize = (8,6),dpi=100)

plt.plot(df_bygg["Period"],df_bygg["value"],label = df_bygg["Bransch (SNI 2007)"].loc[0])
plt.plot(df_handel["Period"],df_handel["value"],label = df_handel["Bransch (SNI 2007)"].loc[0])
plt.plot(df_tillv["Period"],df_tillv["value"],label = df_tillv["Bransch (SNI 2007)"].loc[0])
plt.plot(df_tjanst["Period"],df_tjanst["value"],label = df_tjanst["Bransch (SNI 2007)"].loc[0])


plt.axhline(0, linestyle = "--", color="grey", lw =1)
plt.grid(axis = 'y', color = "lightgrey", alpha=0.3)

plt.legend()

plt.title("Antal anställda (utfall), nettotal, 1996-2024, \n" "månatlig frekvens")
plt.show()

#_____________________________________________________________________________________
#
# Exempelkod för att hämta data från prognosdatabasen (prognos.konj.se)
# Example code for fetching data from the forecast database (prognos.konj.se)
#
# Du behöver installera olika paket
# You need to install additional packages
#
# install.packages("httr")
# install.packages("rjstat")
# install.packages("ggplot2", repos="https://cran.r-project.org/")
#_____________________________________________________________________________________

# Importera paket
# Import package
library(httr)
library(ggplot2)
library(rjstat)

# Ange URL:en
# Input the URL
POST_URL <- 'https://prognos.konj.se:443/PxWeb/api/v1/sv/SenastePrognosen/f09_bnpkonsumtioninvesteringarochutrikeshandel/F0901.px'

# Ange JSON-förfrågan
# Input the JSON query
payload <- '{
  "query": [
    {
      "code": "variabel",
      "selection": {
        "filter": "item",
        "values": [
          "F0901Nbnpmp"
        ]
      }
    },
    {
      "code": "enhet",
      "selection": {
        "filter": "item",
        "values": [
          "F"
        ]
      }
    },
    {
      "code": "period",
      "selection": {
        "filter": "item",
        "values": [
          "2007",
          "2008",
          "2009",
          "2010",
          "2011",
          "2012",
          "2013",
          "2014",
          "2015",
          "2016",
          "2017",
          "2018",
          "2019",
          "2020",
          "2021",
          "2022",
          "2023",
          "2024",
          "2025",
          "2026",
          "2027"
        ]
      }
    }
  ],
  "response": {
    "format": "json-stat"
  }
}'

#_____________________________________________________________________________________

# Ladda data
# Load data

req <-POST(POST_URL, body=payload,encode = "json")
str(req$status) # Get status code, 200 = ok
df <- fromJSONstat(content(req, "text"))

# _____________________________________________________________________________________

# Skapa graf
# Create graph

final_df <- df[[1]]
final_df$value <- final_df$value / 1000

plot <- ggplot(final_df,aes(x=period,y=value,group=1))+
  geom_rect(
    aes(xmin = 18, xmax = 21, ymin = -Inf, ymax = Inf),
    fill = "lightgrey",
    alpha = 0.2)+
  geom_line(color="blue",linewidth=1,alpha=0.8,linetype=1)+
  labs(
    title= "BNP Sverige, mdkr, fasta priser, \n2024-2027 = senaste prognosen",
    x = "",
    y = ""
  )+
  theme(
    # Hide panel borders and remove grid lines
    panel.background = element_rect(fill = 'white'),
    panel.grid.major.y = element_line(colour="lightgrey"),
    # Change axis line
    axis.line = element_line(colour = "black"))+
  annotate("text", 19.5, y=5250, label= "prognos")

print(plot)

#_____________________________________________________________________________________
#
# Exempelkod för att hämta data från statistikdabasen (statistik.konj.se)
# Example code for fetching data from the forecast database (statistik.konj.se)
#
# Du behöver installera olika paket
# You need to install additional packages
#
# install.packages("httr")
# install.packages("rjstat")
# install.packages("ggplot2", repos="https://cran.r-project.org/")
#_____________________________________________________________________________________

# Importera paket
# Import package
library(httr)
library(ggplot2)
library(rjstat)

# Ange URL:en
# Input the URL
POST_URL <- 'https://statistik.konj.se:443/PxWeb/api/v1/sv/KonjBar/indikatorer/Indikatorm.px'

# Ange JSON-förfrågan
# Input the JSON query
payload <- '{
  "query": [
    {
      "code": "Indikator",
      "selection": {
        "filter": "item",
        "values": [
          "KIFI"
        ]
      }
    }
  ],
  "response": {
    "format": "json-stat"
  }
}'

#_____________________________________________________________________________________

# Ladda data
# Load data

req <-POST(POST_URL, body=payload,encode = "json")
str(req$status) # Get status code, 200 = ok
df <- fromJSONstat(content(req, "text"))

req <-POST(POST_URL, body=payload,encode = "json")
str(req$status) # Get status code, 200 = ok
df <- fromJSONstat(content(req, "text"))
final_data <- df[[1]]


# _____________________________________________________________________________________

# Skapa graf
# Create graph

final_data$Period<-gsub("M","-",as.character(final_data$Period))
final_data$Period<-gsub(" ","",paste(final_data$Period,"-01"))
final_data$Period<-as.Date(final_data$Period,format="%Y-%m-%d")

plot <- ggplot(final_data,aes(y=value,x=Period))+
  geom_line(color="blue",linewidth=1,alpha=0.8,linetype=1)+
  scale_x_date(
    limits = as.Date(c('1996-01-01','2024-01-01')),
    breaks = scales::date_breaks("2 years"), date_labels="%Y",
    guide = guide_axis(angle = 45)
  )+
  scale_y_continuous(limits=c(60,130),
    breaks = scales::breaks_width(10)
  )+
  theme(
    # Hide panel borders and remove grid lines
    panel.background = element_rect(fill = 'white'),
    panel.grid.major.y = element_line(colour="lightgrey"),
    # Change axis line
    axis.line = element_line(colour = "black")
  )+
  labs(
    title="Barometerindikatorn, 1996-2024, \månatlig frekvens"

  )
print(plot)

#_____________________________________________________________________________________
#
# Exempelkod för att hämta data från statistikdabasen (statistik.konj.se) och kombinera
# ihop serier från olika uttag
# Example code for fetching data from the statistical database (statistik.konj.se) and
# combining series from different queries.
#
# Du behöver installera olika paket
# You need to install additional packages
#
# install.packages("httr")
# install.packages("rjstat")
# install.packages("ggplot2", repos="https://cran.r-project.org/")
#_____________________________________________________________________________________

# Importera paket
# Import package
library(httr)
library(ggplot2)
library(rjstat)

# Ange URL:en
# Input the URL

# BYGG
POST_URL_BYGG = 'https://statistik.konj.se:443/PxWeb/api/v1/sv/KonjBar/ftgmanad/Barboam.px'

# Ange JSON-förfrågan
# Input the JSON query
bygg_payload = '{
  "query": [
    {
      "code": "Bransch (SNI 2007)",
      "selection": {
        "filter": "item",
        "values": [
          "BBYG"
        ]
      }
    },
    {
      "code": "Fråga",
      "selection": {
        "filter": "item",
        "values": [
          "106"
        ]
      }
    },
    {
      "code": "Serie",
      "selection": {
        "filter": "item",
        "values": [
          "S"
        ]
      }
    }
  ],
  "response": {
    "format": "json-stat"
  }
}'

# Ladda data, mm
# Load data, etc
req_bygg <-POST(POST_URL_BYGG, body=bygg_payload,encode = "json")
str(req_bygg$status) # Get status code, 200 = ok
df_bygg <- fromJSONstat(content(req_bygg, "text"))
final_data_bygg <- df_bygg[[1]]
final_data_bygg$Period<-gsub("M","-",as.character(final_data_bygg$Period))
final_data_bygg$Period<-gsub(" ","",paste(final_data_bygg$Period,"-01"))
final_data_bygg$Period<-as.Date(final_data_bygg$Period,format="%Y-%m-%d")

#_____________________________________________________________________________________

# Återupprepa datauttaget för ytterligare tre serier
# Repeat the data extraction for three additional series

# Handeln
# Trade

POST_URL_HANDEL = 'https://statistik.konj.se:443/PxWeb/api/v1/sv/KonjBar/ftgmanad/Barhanm.px'

handel_payload = '{
  "query": [
    {
      "code": "Bransch (SNI 2007)",
      "selection": {
        "filter": "item",
        "values": [
          "BHAN"
        ]
      }
    },
    {
      "code": "Fråga",
      "selection": {
        "filter": "item",
        "values": [
          "104"
        ]
      }
    },
    {
      "code": "Serie",
      "selection": {
        "filter": "item",
        "values": [
          "S"
        ]
      }
    },
    {
      "code": "Period",
      "selection": {
        "filter": "all",
        "values": [
          "*"
        ]
      }
    }
  ],
  "response": {
    "format": "json-stat"
  }
}'

req_handel <-POST(POST_URL_HANDEL, body=handel_payload,encode = "json")
str(req_handel$status) # Get status code, 200 = ok
df_handel <- fromJSONstat(content(req_handel, "text"))
final_data_handel <- df_handel[[1]]
final_data_handel$Period<-gsub("M","-",as.character(final_data_handel$Period))
final_data_handel$Period<-gsub(" ","",paste(final_data_handel$Period,"-01"))
final_data_handel$Period<-as.Date(final_data_handel$Period,format="%Y-%m-%d")

# Tillverkningsindustri
# Manufacturing industry

POST_URL_TILLV = 'https://statistik.konj.se:443/PxWeb/api/v1/sv/KonjBar/ftgmanad/Barindm.px'

payload_tillv = '{
  "query": [
    {
      "code": "Bransch (SNI 2007)",
      "selection": {
        "filter": "item",
        "values": [
          "BTVI"
        ]
      }
    },
    {
      "code": "Fråga",
      "selection": {
        "filter": "item",
        "values": [
          "107"
        ]
      }
    },
    {
      "code": "Serie",
      "selection": {
        "filter": "item",
        "values": [
          "S"
        ]
      }
    },
    {
      "code": "Period",
      "selection": {
        "filter": "all",
        "values": [
          "*"
        ]
      }
    }
  ],
  "response": {
    "format": "json-stat"
  }
}'


req_tillv <-POST(POST_URL_TILLV, body=payload_tillv,encode = "json")
str(req_tillv$status) # Get status code, 200 = ok
df_tillv <- fromJSONstat(content(req_tillv, "text"))
final_data_tillv <- df_tillv[[1]]
final_data_tillv$Period<-gsub("M","-",as.character(final_data_tillv$Period))
final_data_tillv$Period<-gsub(" ","",paste(final_data_tillv$Period,"-01"))
final_data_tillv$Period<-as.Date(final_data_tillv$Period,format="%Y-%m-%d")

# Tjänstesektorn
# Service sector


POST_URL_TJANST = 'https://statistik.konj.se:443/PxWeb/api/v1/sv/KonjBar/ftgmanad/Bartjam.px'

payload_tjanst = '{
  "query": [
    {
      "code": "Bransch (SNI 2007)",
      "selection": {
        "filter": "item",
        "values": [
          "BTJA"
        ]
      }
    },
    {
      "code": "Fråga",
      "selection": {
        "filter": "item",
        "values": [
          "105"
        ]
      }
    },
    {
      "code": "Serie",
      "selection": {
        "filter": "item",
        "values": [
          "S"
        ]
      }
    },
    {
      "code": "Period",
      "selection": {
        "filter": "all",
        "values": [
          "*"
        ]
      }
    }
  ],
  "response": {
    "format": "json-stat"
  }
}'


req_tjanst <-POST(POST_URL_TJANST, body=payload_tjanst,encode = "json")
str(req_tjanst$status) # Get status code, 200 = ok
df_tjanst <- fromJSONstat(content(req_tjanst, "text"))
final_data_tjanst <- df_tjanst[[1]]
final_data_tjanst$Period<-gsub("M","-",as.character(final_data_tjanst$Period))
final_data_tjanst$Period<-gsub(" ","",paste(final_data_tjanst$Period,"-01"))
final_data_tjanst$Period<-as.Date(final_data_tjanst$Period,format="%Y-%m-%d")

# _____________________________________________________________________________________

# Skapa graf
# Create graph

test_merge <- merge(final_data_bygg,final_data_handel, on = "Bransch (SNI 2007)", all = T)
test_merge <- merge(test_merge, final_data_tillv,      on = "Bransch (SNI 2007)", all = T)
test_merge <- merge(test_merge, final_data_tjanst,     on = "Bransch (SNI 2007)", all = T)
names(test_merge)[names(test_merge) == "Bransch (SNI 2007)"] <- "Bransch"

plot <- ggplot(test_merge, aes(x=Period,y=value,group = Bransch,color=Bransch)) + geom_line(lwd=1) +
              theme(
                # Hide panel borders and remove grid lines
                panel.background = element_rect(fill = 'white'),
                panel.grid.major.y = element_line(colour="lightgrey"),
                # Change axis line
                axis.line = element_line(colour = "black"),
                legend.position = c(0.87,0.1),
                legend.background=element_rect(colour="lightgrey"),
                )+
              scale_x_date(
                limits = as.Date(c('2000-01-01','2024-01-01')),
                breaks = scales::date_breaks("2 years"), date_labels="%Y",
                guide = guide_axis(angle = 45)
              )+
              labs(
                title="Barometerindikatorn, 1996-2024, \nmånatlig frekvens",
                y = "",
                x = ""
              )
print(plot