# Příprava dat z ENO do datové platformy Golemio

## Postup poprvé

1. Stažení zdrojových dat z:
    - [Data o objektech spravovaných MHMP](https://operator.sharepoint.com/:x:/s/Energetickportl2024/EY0U2oAmVctHt0uv6wlZfacBgv63KMOpcU9JHUmVeXAuFA?e=qjvGZz)
    - [Data o objektech spravovaných Městskými částmi (MČ)](https://operator.sharepoint.com/:x:/s/Energetickportl2024/EbN7TKYgnEBHlBX7gRjw7CYBfOqLbfz5sacuy0Bhq97jJQ?e=cSyPsL)

2. Převést první list do formátu CSV

3. Importovat csv do databáze jako novou tabulku např. skrze proram DBeaver
   - pro importer setings zaškrtnuto nastavení `Set empty string to null`, `Trim whitespace` a také nastaveno `Sample rows count` na 10000 (kvůli možnému podhodnocení datových typů)
   - v `Table mapping` kliknout na tlačítko `configure` a nastavit všechny sloupce jako varchar

4. Spustit sql nad importovanými tabulkami (doplnění gps viz níže)

```sql
CREATE TABLE eno_address_gps ( 
	adresa varchar(250) NULL,
	longitude float4 NULL,
	latitude float4 NULL
);

CREATE VIEW v_eno_map_objects AS
with base as (
  select 
  	*, 
  	'MČ' as "TYP_SPRAVCE",
    CASE 
        WHEN "NAZEV_EJ" LIKE 'Odbor%' THEN "NAZEV_EJ_OTEC" || ' ' || "NAZEV_EJ"
        ELSE "NAZEV_EJ"
    END as "nazev_pozice_v_mape"
  from eno_raw_budova_majetek_mc
union all 
  select 
  	*, 
  	'MMHP' as "TYP_SPRAVCE",  	 
    CASE 
        WHEN "NAZEV_EJ" LIKE 'HL.M.PRAHA%' THEN 'HL.M.PRAHA'
        ELSE "NAZEV_EJ"
    END as "nazev_pozice_v_mape"
  from eno_raw_budova_majetek_mhmp
)
select 
	"POPIS_ADRESA" as adresa,
	null as "ruian_id",
	"NAZEV_EJ" as "nazev_ej",
	"NAZEV_EJ_OTEC" as "ej_otec",
	"TYP_SPRAVCE" as "typ_spravce",
	"nazev_pozice_v_mape",
	ST_SetSRID(ST_MakePoint(ag.longitude, ag.latitude), 4326) as "gps_poloha"
from base b
left join eno_address_gps ag on 
  b."POPIS_ADRESA" = ag.adresa 
where "POPIS_ADRESA" is not null
```

5. Doplnit práva k tabulkám a pohledu

```sql
GRANT REFERENCES, SELECT ON TABLE energetics.eno_raw_budova_majetek_mc TO dataplatform_energetics_ro;
GRANT ALL ON TABLE energetics.eno_raw_budova_majetek_mc TO dataplatform_energetics_rw;

GRANT REFERENCES, SELECT ON TABLE energetics.eno_raw_budova_majetek_mhmp TO dataplatform_energetics_ro;
GRANT ALL ON TABLE energetics.eno_raw_budova_majetek_mhmp TO dataplatform_energetics_rw;

GRANT SELECT, REFERENCES ON TABLE energetics.eno_address_gps TO dataplatform_energetics_ro;
GRANT ALL ON TABLE energetics.eno_address_gps TO dataplatform_energetics_rw;

GRANT REFERENCES, SELECT ON TABLE energetics.v_eno_map_objects TO dataplatform_energetics_ro;
GRANT ALL ON TABLE energetics.v_eno_map_objects TO dataplatform_energetics_rw;
```

## Doplnění GPS souřadnic

1. exportovat relevatní adresy 
```sql
select distinct "adresa", LENGTH("adresa") from energetics.v_eno_map_objects
where 
(adresa like '%Praha%' and LENGTH("adresa")>19
or adresa not like '%Praha%' and LENGTH("adresa")>11)
```

2. použít přiložený skript se správným tokenem
3. importovat výstupní csv do mapovací tabulky `eno_address_gps`

## Postup aktualizace dat

Stačí kroky 1-3., s tím že data se importují do existujících tabulek a stará data se smažou.

## Poznámky

Sloupec ruian_id je prázdný, protože to je volitelná část prototypu.