Lägga till gemensamma uppslagstabeller för SIV
Här samlas de SQL frågor som behövs för att skapa gemensamma uppslagstabeller för SIV
Öppna databas där SIV finns. I detta exempel har Dbeaver används som verktyg men PSQL går lika bra
Schema skfab innehåller SIV databasen. Temporärt schema matchning
skapas
create schema matchning;
--drop schema matchning cascade;
Skadekategorier
Tabell för att lagra gemensamma kategorier (categories_generic
). De finns på svenska , norska och engelska
/* create and update table matchning.categories_generic */
create table matchning.types_generic
(
id serial,
namn_sv text,
namn_no text,
namn_en text
);
-- drop table matchning.types_generic
De vanligast förkommande categorizer hämtas in från SIV kategorier. De som förkommer mer än tre gånger. Översättning sker till norska och svenska. Norska orden används också vid konverteringen
INSERT INTO matchning.categories_generic (namn_sv)
select q.name
from
(
select name, count(1) as number
from skfab.damage_categories c
group by 1
order by 2 desc
) q
where number > 2 and name <> '-odefinierad-'
update matchning.categories_generic set namn_no = 'Uhell', namn_en ='Accident'
where namn_sv = 'Olyckshändelse'
update matchning.categories_generic set namn_no = 'Ansvar', namn_en ='Liability'
where namn_sv = 'Ansvar'
update matchning.categories_generic set namn_no = 'Egendom', namn_en ='Property'
where namn_sv = 'Egendom'
update matchning.categories_generic set namn_no = 'Med overlegg', namn_en ='Intent'
where namn_sv = 'Uppsåt'
--select * from matchning.categories_generic
Tabellen som skapas ser ut så här
Id | namn_sv | namn_no | namn_en |
---|---|---|---|
4 | Olyckshändelse | Uhell | Accident |
1 | Ansvar | Ansvar | Liability |
3 | Egendom | Egendom | Property |
2 | Uppsåt | Med overlegg | Intent |
Nästa steg är att skapa en kors-referens-tabell med hjälp av befintlig kategoritabell (skfab.damage_categories
) och sen lägga till en kolumn med referens till den generiska tabellen
Uppdaterakors-referens-tabell categories_crossref
så att all kategorier matchar varandra
För att testa att allt är matchat så används
Skadetyper
Samma procedur används för skadetyper
Tabellen ser ut så här
id | namn_sv | namn_no | namn_en |
---|---|---|---|
1 | Skadegörelse | Vandalism | Vandalism |
2 | Vatten | Vann | Water |
3 | Glaskross | Glassknuser | Glass breaker |
4 | Klotter | Doodle | Doodle |
5 | Inbrott | Innbrudd | Burglary |
6 | Ansvar | Ansvar | Liability |
7 | Brand | Brann | Fire |
8 | Stöld | Tyveri | Theft |
9 | Övrigt | Annet | Other |
10 | Skada | Skade | Damage |
Skapa en kors-referens-tabell med hjälp av befintlig typ-tabell
Uppdatera de vanligaste och komplettera sen uppdateringen med de udda
Verksamheter
Generiska verksamheter har tagits fram genom att titta på kommunernas hemsidor och använda samma och ganska grova indelning.
Generisk tabell för verksamheter skapas och där de framtagna verksamheterna läggs in
En referenstabell skapas och kommunerna befintliga verksamheter matchas med de generiska. Detta är ett tolkningsarbete
Tabellerna skfab.damage_categories
, skfab.damage_types
och skfab.operation_types
uppdateras alla med en ny kolumn generic.
Värden från den tillfälliga tabellerna matchning.categories_crossref
och matchning.types_crossref
uppdaras till skfab.damage_categories
och skfab.damage_types
Redigerings- och sökformulär måste också uppdateras
Generiska tabeller flyttas till skfab
Testning
Nu testas att skriva ut skador med generiska kategorier och typer
Grupper på kategorier och typer med antal och total skadekostnad
Stäng och ta bort tillfälligt schema
Med cascade tas både schema och dess tabeller bort