DATOJEN YHDISTÄMINEN MONTA ERI TEKNIIKKAA, JOISTA VOI UNELMOIDA
S-PANKKI Ylivoimaista helppoutta ja hyötyä
S-PANKKI PÄHKINÄNKUORESSA S-Pankki on suomalainen kauppapankki, joka palvelee ensisijaisesti S- ryhmän ja LähiTapiola-ryhmän asiakasomistajia. Tarjoamme asiakkaillemme maksamisen, säästämisen ja sijoittamisen sekä hankintojen rahoittamisen palveluja. Meillä on koko Suomen kattava palveluverkosto ja kauppapankkina palvelemme asiakkaitamme kaupan aukioloaikojen mukaisesti, myös iltaisin ja viikonloppuisin. Panostamme digitaalisiin, asiakkaiden arkea helpottaviin palveluihin. S-Pankin omistavat Suomen Osuuskauppojen Keskuskunta 37,5 %, S-ryhmän alueosuuskaupat 37,5 %, LähiTapiola-ryhmä 23,5 % ja Työeläkevakuutusyhtiö Elo 1,5 %. S-Pankki on suomalaisen talletussuojan piirissä ja Finanssivalvonnan valvoma. Olemme täysin suomalainen finanssialan toimija.
S-PANKKI-KONSERNI LUKUINA 31.12.2016 2,9 miljoonaa asiakasta 1,9 miljoonaa kansainvälistä maksukorttia 1,7 miljoonaa kappaletta verkkopankkitunnuksia 4 547 miljoonaa euroa talletuksia 3 492 miljoonaa euroa myönnettyä luottoa 6 264 miljoonaa euroa hallinnoitavia varoja (FIM) 15,1 %:n vakavaraisuusaste 22,3 miljoonan euron liiketulos 5 225 miljoonan euron tase *FIM Varainhoito hallinnoi FIM- ja LähiTapiola-rahastoja
TALLETUSKANTA, LUOTTOKANTA JA HALLINNOITAVAT VARAT Kaikki talletukset joulukuun lopussa olivat yhteensä 4 547 miljoonaa euroa. Luottokanta oli joulukuun lopussa 3 492 miljoonaa euroa. FIMin hallinnoitavat varat (AuM) olivat joulukuun lopussa 6 264 miljoonaa euroa. FIM hallinnoi omien rahastojensa
SISÄLTÖ DATA MERGE Indeksit DATA MERGE (KEY=) DATA MERGE (FORMAT) Formaattien tekeminen
DATA MERGE Datan yhdistäminen rinnakkain voidaan toteuttaa SQL:llä tai data-vaiheen Merge-lauseella. Merge vaatii sen, että aineisto on joko järjestetty tai indeksoitu bymuuttujan mukaan. By-muuttujan on oltava kaikissa yhdistettävissä datoissa. Mergellä voidaan yhdistää (melkein) rajaton määrä tauluja rinnakkain. Case talletussuoja
TALLETUSSUOJAN MAKSATUSJÄRJESTELMÄHANKE Rahoitusvakausvirasto on asettanut talletussuojan maksatusjärjestelmähankkeen, jossa tavoitteena on luoda prosessit ja rakentaa tarvittavat järjestelmät talletuksia koskevaan tiedonkeruuseen ja talletussuojakorvausten maksatukseen kriisitilanteissa. Hankkeen toimikausi on 1.3.2016 31.12.2017. Rahoitusvakausviranomaisesta annetun lain 5 luvun 10 :n mukaan Rahoitusvakausviraston on suoritettava korvaukset tallettajille seitsemän työpäivän kuluessa 9 :ssä tarkoitetusta viraston päätöksestä koskien talletusten korvaamista talletussuojarahaston varoista. Lain 5 luvun 2 :n mukaan talletuspankeilla on velvollisuus toimittaa virastolle tiedot korvauskelpoisista ja korvattavista talletuksista viraston pyytäessä ja rakennettava tätä varten sisäiset järjestelmät.
SUOJA ON HENKILÖKOHTAINEN, EI TILIKOHTAINEN Talletusten tai tilien lukumäärästä riippumatta tallettajan talletukset yhdessä pankissa korvataan 100 000 euroon asti. Pankkitili (avistatili) on talletussuojan piirissä. Määräaikaistalletus (määräaikaistili) on talletussuojan piirissä. ASP-tili on talletussuojan piirissä. PS-tiliin liittyvä säästämistili on talletussuojan piirissä. Lisäksi talletussuojan piiriin kuuluu sijoituskohteeksi nimetty talletustili tai määräaikaistalletus. Yritykset kuuluvat talletussuojan piiriin yhtiömuodosta ja koosta riippumatta. Yhdistykset ja säätiöt kuuluvat talletussuojan piiriin. Talletussuojan piiriin eivät kuulu: julkisyhteisöt, esimerkiksi valtio ja valtion laitokset, kunta ja kuntayhtymä sekä Ahvenanmaan maakunta luottolaitos, sijoituspalveluyritys, rahastoyhtiö, vaihtoehtorahastojen hoitaja ja rahoituslaitos vakuutusyhtiö, vakuutusyhdistys, eläkesäätiö ja vakuutuskassa.
TIEDONKERUU PANKEILTA Tieto on toimitettava Rahoitusvakausvirastolle 100 000 euron vastapuolikohtainen raja / pankkiryhmittymä Onko data kannassa jo valmiiksi summattuna vastapuolittain, tuotetyypeittäin? Miten mahdollisesti sopimuskohtaisesta datasta voidaan saada ryhmiteltyä / summattua vastapuolikohtainen data? Aiheuttaako vastapuolen sektorin huomioiminen käsittelyyn sääntöjä? Miten yhdistetään yhden asiakkaan monta avistatiliä talletussuojan selvittämiseksi? SQL summataan vastapuolittain? Talletussuojan alaiset tilit eri tietokannassa, kuin eisuojatut? Vastapuolen sektorin huomioiminen? Vai?
MERGE-YHDISTYS Bufferi Bufferi Nimi Tyyppi koko PDV Data uusi; merge vanha1 vanha2 ; by kriteeri; Run;
MERGE-LAUSE Merge eka toka; By kriteeri; Aineistojen tulee olla järjestetty tai indeksoitu by-muuttujan mukaiseen järjestykseen. Yhdistettävien taulujen lukumäärää ei ole rajoitettu.
SORT Aineistojen järjestäminen tapahtuu sort-proseduurin avulla: Proc sort data=jarjestettava <out=tulos>; By kriteeri; Run;
AINEISTOJEN JÄRJESTÄMINEN proc sort data=counterparty; by sector_cd; run; proc sort data=luokittelu; by economic_sector_real_cd; run; NOTE: There were xxxxxxx observations read from the data set WORK.COUNTERPARTY. NOTE: The data set WORK.COUNTERPARTY has xxxxxxx observations and 5 variables. NOTE: PROCEDURE SORT used (Total process time): real time 2.49 seconds cpu time 3.81 seconds NOTE: There were 79 observations read from the data set WORK.LUOKITTELU. NOTE: The data set WORK.LUOKITTELU has 79 observations and 2 variables. NOTE: PROCEDURE SORT used (Total process time): real time 0.00 seconds cpu time 0.00 seconds
DATAN YHDISTÄMINEN MERGE-LAUSEEN AVULLA data vp_lcr; merge counterparty luokittelu (rename=(economic_sector_real_cd=sector_cd)); by sector_cd; length lcr $50.; if company_type_cd in ('1','2','3') and lcr_classification ='Yritykset pl. rahoitusala' then LCR='PK (Yritykset)'; else lcr=lcr_classification; run; NOTE: There were xxxxxxx observations read from the data set WORK.COUNTERPARTY. NOTE: There were 79 observations read from the data set WORK.LUOKITTELU. NOTE: The data set WORK.VP_LCR has xxxxxxx observations and 7 variables. NOTE: DATA statement used (Total process time): real time cpu time 1.57 seconds 1.57 seconds Vastaava SQL
DATA MERGE (KEY=) Tehokkain tapa yhdistämiseen on käyttää indeksoiduilla aineistoilla Key= optiota yhdistettäessä. Aineiston on oltava indeksoitua, pelkkä sorttaus ei riitä. Data yhdistetty; set partcode(keep=partno new_stk); set invtory(keep=partno instock price) key=partno/unique; instock=instock+new_stk; run;
INDEKSIT SAS tauluihin on mahdollista luoda indeksejä. Indeksi on lisätiedosto, jossa on linkki varsinaisessa datassa olevaan havaintoon indeksin arvon perusteella. Indeksi voi olla yksiarvoinen tai moniarvoinen.
INDEKSIN KÄYTTÖ Muisti Indeksi Indeksi Indeksitiedosto tarkistetaan Vain tarvittavat sivut ladataan Lähtödata levyllä I/O Bufferit Where-ehdon täyttävät havainnot poimitaan suoraan PDV I/O Bufferit ID Arvo Tieto Tulosdata levyllä
INDEKSIT Tauluun on mahdollista luoda indeksi sen luomisen yhteydessä tai jälkikäteen proc sql:n tai proc datasets:in avulla. Indeksi on yksinkertainen, jolloin se saa nimensä sarakkeen mukaan tai komposiitti. Komposiitti-indeksille keksitään nimi, joka ei ole taulun sarakkeen nimi.
INDEKSIEN KÄYTTÖ Proc sql; Drop index indeksinnimi from taulu; *poistaa indeksin; Create <optio> index age Quit; on sashelp.class (age); *luo indeksin;
INDEKSIN KÄYTTÖMAHDOLLISUUDET Indeksejä käytetään silloin, kun niiden käyttö on tehokasta. Where-ehdossa viitattaessa yksinkertaisen indeksin arvoon komposiitti-indekseissä viitattaessa ensimmäiseen avainarvoon
SUOSITUKSIA INDEKSEILLE Vähän indeksejä Ei alle 3 sivuisille datoille Indeksitaulun ylläpitokustannukset pitää ottaa huomioon Valitse where-ehtoon sopivia indeksejä Indeksi ei saa olla liian yleinen
INDEKSIN PLUSSAT JA MIINUKSET HYÖDYT Nopea pääsy pieniin osajoukkoihin Arvot palautuvat järjestyksessä Voi pakottaa yksikäsitteisyyteen Yhdistyskriteeri HAITAT Lisää CPU:n ja I/O:n tarvetta luotaessa ja ylläpidettäessä Kasvattaa CPU:ta dataa luettaessa Vie enemmän levytilaa Vie enemmän muistia indeksitauluille ja SAS C koodille käytön aikana
HUOMAUTUS Mikäli aineisto on indeksoitu, ei mergellä tapahtuvassa yhdistämisessä vaadita aineiston järjestämistä. Yhdistys voi kestää kauan. Mikäli aineisto on indeksoitu, voidaan indeksiä käyttää kahden set-lauseen ja key-option kautta tapahtuvassa yhdistämisessä.
DATAN YHDISTÄMINEN FORMAATTIEN KAUTTA Formaatti voidaan luoda proc format:in avulla kovakoodaten tai se voidaan luoda dynaamisesti datan perusteella. Formaattia varten tarvitaan dataan vähintään seuraavat kentät: FMTNAME, joka kertoo minkä niminen formaatti luodaan TYPE, joka saa arvon C tai N riippuen siitä, onko kyse merkkimuotoisesta vai numeerisesta formaatista START, formatoitava datan arvo LABEL, esitettävä arvo
FORMAATIN LUOMINEN data formaatti; retain fmtname 'LCR' type 'C' ; set vp_lcr_eka; start=counterparty_id; label=lcr; keep fmtname type start label; run; Formaatin pohjana oleva data voi olla nimeltään mikä tahansa. Retainilla alustettava muuttuja säilyttää arvonsa PDV:ssä koko data-vaiheen suorituksen ajan. Stop-muuttujaa voidaan käyttää arvovälin lopetukseen.
FORMAATIN MÄÄRITTELY JA KÄYTTÖ proc format cntlin=formaatti; run; data yhdistetty; set siisti; drop sumi; tallettajatyyppi =put(owner_counterparty_id,$lcr.); Formaatti luodaan datan perusteella proc formatkoodilla. Formaattia voidaan käyttää format-lauseessa datan arvon (muodon) muuttamiseen tai sijoittamalla uuden muuttujan arvoksi formaatilla kerrottu arvo.
EDUT YHDISTÄMISESSÄ Formaatin käytössä etuna on tilantarpeen pieneneminen ja ajon nopeutuminen. Jos yhdistäminen tehdään SQL:ssä, on tilantarve moninkertainen. SQL yhdistää kaikki kaikkien kanssa Liitoksen aikana tarvitaan huomattavan suuri määrä tilaa. 5 miljoonaa talletustiliä.. Yhdistetään rinnakkain 10 tilityyppiä.. Edes 5 saraketta jokaisesta.. Koko?? Jotain aivan järkyttävää
FORMAATIN AVULLA YHDISTÄMINEN Kun yhdistäminen tehdään formaatin avulla, luetaan tietoa PDV:hen vain yksi havainto kerrallaan ja formaatin tiedot haetaan vektorista. tallettajatyyppi =put(owner_counterparty_id,$lcr.) ; Bufferi Bufferi PDV Nimi tallettajatyyppi Tyyppi char Koko labelin pituudesta $lcr. start label 1245 yritykset 1245 yritykset Tilantarve on huomattavasti pienempi, kuin mitä SQL:ää käytettäessä. Jos yhdistäminen edes Mergen kanssa ei onnistu, onnistuu se formaattien avulla. Don t try this at work.. Siis näin isot aineistot kannattaa tallettaa compressoituna suoraan levylle!
TEHOKKUUSLUKUJA Aineiston läpikäyminen on tehokasta, yhdistämiseen menee käytännössä sama aika, kuin aineiston yksinkertaiseen läpilukuun. NOTE: Table WORK.QUERY_FOR_DEPOSIT_2017 created, with xxxxxxx rows and 22 columns. 59 QUIT; NOTE: PROCEDURE SQL used (Total process time): real time cpu time 11.38 seconds 9.25 seconds data yhdistetty; set siisti; drop sumi; tallettajatyyppi =put(owner_counterparty_id,$lcr.); NOTE: There were xxxxxxx observations read from the data set WORK.SIISTI. NOTE: The data set WORK.YHDISTETTY has xxxxxxx observations and 8 variables. NOTE: DATA statement used (Total process time): real time cpu time 3.06 seconds 3.06 seconds Huom, dataa monistettiin kun aineisto jaettiin talletussuojan alaiseen ja eialaiseen osaan.