db2-tietokannan hyödyntäminen sas-ohjelmistolla

52

Upload: tess98

Post on 14-Jun-2015

777 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla
Page 2: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

DB2 - tietokannan hyödyntäminen SASin välineillä

SAS Technical Club 28.1.2010

Henrik LähdeniemiArto Valtanen

Page 3: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

OP-Pohjola-ryhmä

DB2 käyttö Tietopalveluympäristössä

Tekninen ympäristö

Volyymit

Rajapinnat

Tietoturva

Table Server

DB2 käyttö OPDWssä

OPK Tietopalveluarkkitehtuuri / DWH sovellus / OPDW tietovarasto

OPDW tietovarasto, tietolähteet/liittymät ja tietomalli

OPDW:n ETL ratkaisu(SAS), tietokanta(DB2) ja OUT rajapinnat (SAS ja DB2)

OPDW ETL - DB2paivi makro

OPDW OUT - db2sqlpassthroughextract makro

Tietovaraston kantojen virheet ja häiriötilanteet

Eri hyödyntämistavat tietovaraston DB2 ja SAS tauluille/näkymille

DB2 - tietokannan hyödyntäminen SASin välineillä

Page 4: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

• Yli 4,1 miljoonaa asiakasta Suomessa

• pankkiasiakkaita noin 3,3 miljoonaa

• Pohjolan vakuutusasiakkaita noin 1,8 miljoonaa

• pankki- ja vakuutustoiminnan yhteisten asiakkaiden määrä kasvussa – nyt yli miljoona

• Baltiassa noin 200 000 asiakasta

• 1,3 miljoonaa omistajajäsentä

• 12 750 pankki- ja vakuutusalan ammattilaista

• maan kattavin palveluverkosto

OP-Pohjola-ryhmä on johtava finanssiryhmä Suomessa

Page 5: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Omistajajäsenet

OP-Pohjola-ryhmän rakenne

221 jäsenosuuspankkia

OP-KESKUS OSK

Helsingin OP Pankki Oyj

OP-Rahastoyhtiö Oy OP-Henkivakuutus Oy

Muut tytäryhtiöt

POHJOLA PANKKI OYJ

Varainhoito Vahinkovakuutus

Pankkitoiminta

Ryhmän ulkopuolisia osakkeen- omistajia

OP-KESKUS OSK:N TYTÄRYHTIÖT

Page 6: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

OP-Keskus osk (OPK)

• OP-Pohjola-ryhmän kehittämis- ja palvelukeskus• valmistelee OP-Pohjola-ryhmän

yhteiset toimintalinjat.

• edistää ryhmän yhteistoimintaa.

• huolehtii ryhmän edunvalvonnasta.

• valvoo osuuspankkien riskienhallintaa, vakavaraisuutta ja maksuvalmiutta.

• tuottaa osuuspankeille keskitettyjä palveluita.

• Ydinpalvelualueet:• Tuote- ja palvelukehitys

• Palveluiden tuottaminen

• ICT-palvelut

• Ryhmäohjaus

• Strateginen omistusyhteisö

• OP-Keskuksen tytäryhtiöt tukevat ja täydentävät osuuspankkien toimintaa.

Keskeiset tytäryhtiöt

• Pohjola Pankki Oyj

• Helsingin OP Pankki Oyj

• OP-Henkivakuutus Oy

• OP-Rahastoyhtiö Oy

• OP-Asuntoluottopankki Oyj

• OP-Kotipankki Oyj

Page 7: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

• OP-Pohjola-ryhmä

• DB2 käyttö Tietopalveluympäristössä

• Tekninen ympäristö

• Volyymit

• Rajapinnat

• Tietoturva

• Table Server

• DB2 käyttö OPDWssä

• OPK Tietopalveluarkkitehtuuri / DWH sovellus / OPDW tietovarasto

• OPDW tietovarasto, tietolähteet/liittymät ja tietomalli

• OPDW:n ETL ratkaisu(SAS), tietokanta(DB2) ja OUT rajapinnat (SAS ja DB2)

• OPDW ETL - DB2paivi makro

• OPDW OUT - db2sqlpassthroughextract makro

• Tietovaraston kantojen virheet ja häiriötilanteet

• Eri hyödyntämistavat tietovaraston DB2 ja SAS tauluille/näkymille

DB2 - tietokannan hyödyntäminen SASin välineillä

Page 8: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Tietopalveluympäristö

• Alustat

• HP Superdome 64 Itanium

• IBM z9

• käyttöjärjestelmät

• HP-UX 11.31

• z/OS 1.9

• Tietokannat

• z/OS DB2 9.5

• UDB DB2 9.5

• SAS 9.1.3 / DB2:sta hyödyntävät SAS clientit:

• DI-Studio 3.4

• EG 4.1

• Base SAS

• Management Console

Page 9: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

OP IBM Z/OS

CICS

DB2

Batch

Tipa

SAS Application

s

TCP/IPHPCenter

-server NFSHPCenter

-server NFS

DB2 connect

TCP/IP

Metadata

ArchiveSAS table

TCP/IPFTP

Control-M

Patrol

DB2

Pohjola IBM Z/OS

IMS

DB2

Batch

DB2 connect

TCP/IP SAS data

Tietopalveluympäristö

Page 10: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Volyymit

• Levytilaa SAS käytössä n. 7.2 Tb

• UDB DB2:ssa 1,4Tb

• UDB DB2 tauluja / näkemyksiä n. 700 kpl.

• SAS tauluja, näkemyksiä & indeksejä yhteensä: 2,18 milj.

• Päivittäisiä SAS eräajoja n. 1100 kpl.

• SAS sovelluksia yht. 62 kpl.

• Sovelluskoodeja n. 12000 kpl.

Page 11: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Rajapinnat

• SAS/ACCESS Interface to DB2

• toteuttaa nopean ja näkymättömän rajapinnan DB2:seen

• hoitaa taustalla DB2:ssa kaiken toiminnan, tulkitsee käskyt tietokantaan käyttäjän näkemättä

• vähentää koodausta, eikä käyttäjän tarvitse tietää DB2:sta välttämättä mitään, poislukien uusien DB2 taulujen luonnit

• libnamella (DB2) käyttöön kuin mikä tahansa SAS kirjasto

LIBNAME dwidb2 DB2 Datasrc=DWIUDB SCHEMA="&dwiudb_schema." USER="&dwiudb_user." PASSWORD="&dwiudb_pw.";

• Voidaan päivittää ja lukea dataa kuin mitä tahansa taulua ja DB2 hoitaa eheyden ja taulujen lukituksen samalla

• kyselyn tulos voidaan suoraan kirjoittaa SAS tauluun tai näkymään

• rajapinta käytettävissä eräajoissa ja käyttöliittymissä

Page 12: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Rajapinnat

• Datan suuruuden mukaan muutetaan taulujen latauksissa dbcommit optiotiota vaikka SAS makroilla

DBCOMMIT=1000 (insert); 0 (update); 10000 (bulk load)

• Hakujen, kyselyiden tai taulujen yhdistelyn tehokkuuden lisäämiseksi kannattaa käyttää tietokanta apufunktiota

• DBKEY = primary key(t) tietokantataulussa

• DBINDEX = parametrinä indeksin nimi kannassa tai YES, jolloin etsii tarvittavan indeksin kannasta.

Page 13: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Rajapinnat

• Pass-Through Facility

• Mahdollistaa ”Suoran toiminnan” koodaukseen kantaan

• Vaatii SQL tuntemusta

• Koodi suoritetaan kannassa suoraan ja tuodaan vain tarvittava tietojoukko vastauksena takaisin

• Mahdollista tehdä execute käskyjä eli kantamuutoksia

• vähentää CPU:n ja muistin käyttöä SAS:ssa.

• Voidaan kutsua kantaan määriteltyjä StoredProcesseja

• Paluukoodit ja messut kannasta lokille tai ohjelmalle

24 %put &SQLXRC;

-1

25 %put &SQLXMSG;

ERROR: Connection to the db2 DBMS does not exist.

Page 14: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Execute käskyt

• CREATE

• Luodaan tauluja, näkymiä, indeksejä tai muita DBMS objecteja

• DELETE

• Tuhotaan rivejä tauluista

• DROPPoistetaan tauluja, näkymiä, indeksejä tai muita DBMS objecteja

• GRANT

• Annetaan käyttäjille oikeuksia muokata mm. tauluja tai indeksejä

• INSERT

• Lisätään rivejä tauluun

• REVOKE

• Kumotaan käyttäjien oikeuksia

• UPDATE

• Päivitetään dataa tauluihin

Page 15: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Executeoptions sastrace=',,,d' sastraceloc=saslog;

proc sql; connect to db2 as db1 (database=DWIUDB

schema="&dwiudb_schema." user="&dwiudb_user." password="&dwiudb_pw."); execute ( update "&dwiudb_schema.".tts_control set ts_end = case system when 'EL' then &el_start when 'HV' then &hv_start

when 'IF' then &if_start when 'MA' then &ma_start

end where system

in(&el_system,&hv_system,&if_system,&ma_system,&rv_system, &tv_system,&vv_system,&ye_system,&yk_system ) AND table_id = 'LGSQ' ) by db1; disconnect from db1;quit;

Page 16: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

DBKEY

data work.astaulu;

set opdwout.vasiakk;

set dwdata1.VASIAKK_MUUASTUN(DBKEY=(OYTUN ASTUN ASTUNTYYPPI MUUASTUN MUUAST_ALKUPVM)

) KEY=DBKEY;

select(_iorc_);

when(%sysrc(_sok)) do;

put astun=;

output;

end;

run;

Page 17: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

DBKEY

options sastrace=',,,d' sastraceloc=saslog;

proc sql;

create table saswork.task_henk as select

b.asko_id, a.oytun, b.astun, b.liitos_kd

from dwdata1.vasiakk_tunl01(dbkey=(astun)) a left join dwdata1.vaskok_asiakas b

on a.astun = b.astun;

quit;

Page 18: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Rajapinnat

• DI-Studiota varten luodaan metadataan tarvittavat libname, schema, server määritykset

• Päivämäärien ja aikaleimien konversioita• DB2 timestamp:it ja date:t näkyviin kantamuodossa mm. EG:ssä,

laittamalla libname lauseeseen STRINGDATES=YES • Tekee char muodossa: 2009-11-26 15:23:14.000000• Oletuksena NO ja tekee date tyyppisen sarakkeen datetime25.6

formaatilla näin: 26NOV2009:15:23:14.000000

data _null_; dtm=datetime(); yyyymmdd=put(datepart(dtm), yymmddn8.); hh=put( hour(timepart(dtm)), z2.); mm=put(minute(timepart(dtm)), z2.); ss=put(second(timepart(dtm)), z2.); timestamp=yyyymmdd!!hh!!mm!!ss; call symput('timestamp', timestamp); run;

Page 19: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Rajapinnat

Page 20: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

lokioptioita DB2:options sastrace =',,,d' ;

REMOTE(UNIX): DB2: AUTOCOMMIT turned ON for connection id 0 0 1263215581 no_name 0 SQL

REMOTE(UNIX): 1 1263215581 no_name 0 SQLREMOTE(UNIX): DB2_1: Prepared: 2 1263215581 no_name 0 SQLREMOTE(UNIX): SELECT * FROM DDWH.TASKOK_ASIAKAS FOR

READ ONLY 3 1263215581 no_name 0 SQLREMOTE(UNIX): 4 1263215581 no_name 0 SQLREMOTE(UNIX): DB2: COMMIT performed on connection 0. 5

1263215581 no_name 0 SQLREMOTE(UNIX): 6 1263215581 no_name 0 SQLREMOTE(UNIX): DB2_2: Prepared: 7 1263215581 no_name 0 SQLREMOTE(UNIX): select COUNT_BIG(*) from DDWH.TASKOK_ASIAKAS

FOR READ ONLY 8 1263215581 no_name0 SQL

Page 21: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

lokioptioita DB2: options sastrace =',,,s' ;

REMOTE(UNIX): Summary Statistics for DB2 are: 79 1263217060 no_name 0 SQL

REMOTE(UNIX): Total row fetch seconds were: 0.068400 80 1263217060 no_name

0 SQLREMOTE(UNIX): Total SQL execution seconds were: 0.006135

81 1263217060 no_name0 SQLREMOTE(UNIX): Total SQL prepare seconds were: 0.000051 82

1263217060 no_name0 SQLREMOTE(UNIX): Total SQL describe seconds were: 0.025576 83

1263217060 no_name0 SQLREMOTE(UNIX): Total seconds used by the DB2 ACCESS engine were

0.153348 84 1263217060no_name 0 SQLREMOTE(UNIX): 85 1263217060 no_name 0 SQL

Page 22: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Tietoturva

• Tiedon eheyden hallinta, taulujen constraints määritykset

• Tietomalli

• Taulujen lukitukset, päivitysten hallinta

• rivi / sivu lukitukset, duplicaatit, rollback

• Varmistukset / palautukset

• Lokitukset & statistiikka tarkalla tasolla

• Kantaoikeudet

• tekniset tunnukset, käyttäjä & ryhmä tasoilla

Page 23: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

9.2: Table Server

• SAS 9.2 sisältää arkkitehtuurisesti merkittävän uutuuden eli skaalautuvan, säikeistetyn ja standardeihin perustuvan Table Server -palvelimen, joka tarjoaa yhden rajapinnan SASiin ja kolmansien osapuolten tietolähteisiin.

• Hoitaa lukitukset ja natiivin keskustelun eri kantoihin

• koodianalysaattori jakaa monimutkaiset kyselyt pienempiin palasiin, jotka suoritetaan säikeistetysti

• Table Server tukee Base SAS ja SPDS-tauluja sekä kolmansien osapuolten tietokantoja, kuten DB2:ta, Oraclea, Teradataa ja kaikkia tietokantoja, joihin otetaan yhteyttä ODBC-rajapinnan kautta.

Page 24: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

9.2: Table Server

Page 25: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

• OP-Pohjola-ryhmä

• DB2 käyttö Tietopalveluympäristössä

• Tekninen ympäristö

• Volyymit

• Rajapinnat

• Tietoturva

• Table Server

• DB2 käyttö OPDWssä

• OPK Tietopalveluarkkitehtuuri / DWH sovellus / OPDW tietovarasto

• OPDW tietovarasto, tietolähteet/liittymät ja tietomalli

• OPDW:n ETL ratkaisu(SAS), tietokanta(DB2) ja OUT rajapinnat (SAS ja DB2)

• OPDW ETL - DB2paivi makro

• OPDW OUT - db2sqlpassthroughextract makro

• Tietovaraston kantojen virheet ja häiriötilanteet

• Eri hyödyntämistavat tietovaraston DB2 ja SAS tauluille/näkymille

DB2 - tietokannan hyödyntäminen SASin välineillä

Page 26: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Suunnittelu, seuranta,

analysointi, ohjaus

Tietopalveluarkkitehtuuri

Tietopalvelualue: tietovarastointi ja tietopalvelut

Tieto-virta

Operatiivinenliiketoiminta

Liiketoiminnan ohjaus ja –kehittäminen

Tietolähteet Raportointi- ja analysointi-

palvelut

Myynti, asiakkuudet ja

palvelut

Talouden ohjaus ja vakavaraisuuden

hallinta

Itsenäiskäyttö ja analysointi

ICT:n vastuulla oleva Tipa-infra Liiketoiminnan vastuulla olevat tietopalvelut

OPDW

VakuutusDW

ASO

Yhteiskäyttöisetyhtenäiset tiedotDW

Page 27: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

OPDW tietolähteet/liittymät

• tietolähteet/input liittymät • asiakastiedot• asiakastapahtumat• sopimustiedot• organisaatiotiedot• ohjaustiedot ja muut parametritiedot

• kolme erilaista tietovarastoa OPDW, VAKDW & ASO• OPDW – OP pankit• VAKDW – Pohjola vakuutus• ASO – Pohjola pankki

• tietovarastojen eri rajapinnat (käytössä OPDW, ASO & VakuutusDW). • DB2 (+ muut tietokannat)• SAS• tekstitiedostot (mukaan lukien excel ja csv tiedostot)• XML

• hyödyntäminen • raportointi- ja analysointipalvelut• hyödyntäjät ovat sovelluksia tai itsenäiskäyttäjiä

Page 28: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

DW-out: Tietolähteet ja hyödyntäminen

OPDW

RHASO

DW-out

OKO Vira

ASO

Tasetäsmäytykset

Jälkipäivitys

Kampanjanhallinta

Vastuuryhmäpäättely

Hyödyntäjät

Basel2 Vakavaraisuuslaskenta

MH-Kanta

Vastuulaskenta

ASOOUT

HyödyntäjätHyödyntäjät

Luottoriskimallinnus

VakuutusDW

Page 29: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

OPDW tietomalli

• OPDW sisältää OPDW DB2 tietokannan ja OPDW out SAS datamartin.• OPDW tietovaraston tietomallit

• Eri tietomallit OPDW ja OPDW out:ssa. • OPDW kohdealueet

• ORGANISAATIO• ASIAKAS• TUOTE• SOPIMUS• PKTILI• OMAISUUSKOHDE

• OPDW:n DB2 kannan tietomalli on suunniteltu tietovaraston tietojen tehokkaaseen tallentamiseen. OPDW on EDW tyyppinen pitkälle normalisoitu DB2 tietovarasto. Tietomallissa tiedot jaettu eri osa-alueisiin ja niiden sisällä tiedot pilkottu pienempiin osiin tehokkaasti tallennettaviksi.

• OPDW out on SAS rajapinta hyödyntäjille. Tietomalli on eri kuin OPDW DB2 kannan tietomalli. OPDW out tietomallissa on OPDW tiedot yhtenäistetty hyödyntäjien tarpeita vastaaviksi kokonaisuuksiksi (SAS tauluiksi).

Page 30: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

SOPIMUS

Asiakkaan kanssa tehdyt vähittäispankkitoimintaan liittyvät sopimukset, osa henkivakuutuksista ja muita sopimuksia. Sopimusalueella on mm. seuraavia tietoja:- sopimusten perustiedot- sopimusten volyymit- sopimusten maksusuunnitelmat- sopimusten korkotiedot- sopimusten häiriöt

ASIAKAS

OP-Pohjola-ryhmän asiakkaat: yritysasiakkaat, henkilöasiakkaat, potentiaaliset asiakkaat, suhdetoiminta-asiakkaat, jne.Asiakkaiden tietoja ovat:- perustiedot- asiakaskokonaisuustiedot- asiakastapahtumat- rating- ja tilinpäätöstiedot

ORGANISAATIO

OP-Pohjola-ryhmän organisaatiotiedot. Tietoja:- perustiedot- organisaatiohierarkia- pankin/konsernin tunnusluvut

TUOTE

OP-Pohjola-ryhmän pankkituotteet (pptpkd). Tuotteen tiedot:- perustiedot- sovellus- ja rooliyhteydet- vastuulaskennan ohjaus- vakavaraisuuslaskennan ohjaus- asiakasseurannan ohjaus

PKTILI

OP-Pohjola-ryhmän pääkirjatilikartta saldoineen, ml. konsernit.Tietoja:- perustiedot- saldot

OMAISUUSKOHDE

Asiakkaiden omaisuuskohteet, lähinnä vakuutena olevat.Tiedot:- perustiedot- arvostustiedot- vakuuskohdistustiedot

Page 31: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

OPDW tietovaraston ETL ratkaisu(SAS), tietokanta(DB2) ja OUT rajapinnat (SAS ja DB2).

• OPDW tietovaraston ETL ratkaisu (SAS), tietokanta(DB2) ja OUT rajapinnat (SAS ja DB2).

• Haitat: SAS käyttöoikeushallinta käyttöjärjestelmän kautta, datan monistus (DB2 kanta ja SAS out rajapinta), levytila (SAS out rajapinnoille), kahden tietojärjestelmän tekninen tuki ylläpidettävä, kahden tietojärjestelmän päivitykset, kahden tietojärjestelmän vaatimat resurssit (osaaminen). DB2 taulujen luonti yleisesti DBA työtä.

• Hyödyt: ei välineriippuvaisuutta, SAS hyödyntäminen joustavaa, DB2 käyttöoikeushallinta, SAS data helposti siirrettävää ja muokattavaa. DB2 taulujen partitiointi mahdollisuudet. SAS taulujen luonti SAS kehittäjien työtä.

Page 32: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

OPDW ETL SAS Access to DB2

• OPDW ETL prosessissa DB2 rajapinta on DB2paivi makro.

• DB2paivi makro käyttää libnamea DB2:n (SAS Access to DB2).

• DB2paivi makro tekee DB2 taulun päivitykset ja insertit data stepin OUTPUT, REPLACE ja MODIFY komennoilla mikäli ei havaitse tarpeelliseksi tehdä insert tapauksessa bulkload:ia.

• DB2paivi makro tekee aineistolle bulkload:in kun havaitsee että aineistossa joka viedään tietovaraston kantaan yhteen tauluun on niin paljon rivejä että kannattaa käyttää bulkload:ia. Bulkload tehdään proc append:lla.

• SAS supports three methods of loading data into DB2: Import,Load and CLI LOAD. SAS accesses these load options through the SAS accesses these load options through the bulk load interface.

• DB2paivi makron bulkload metodina on CLILOAD.

Page 33: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

• OPDW:n ETL prosessi ja rajapinta DB2 kantaan tapahtuu SAS makrolla. Tämä makro (DB2paivi) käsittelee OPDW kantaa bulk load interface:n kautta.

• DB2PAIVI makrolla tehdään DB2 taulujen ylläpito tapahtumataulujen tiedoin. Tapahtumataulut sisältävät joko muutostapahtumia (UPDATE) tai lisäystapahtumia (INSERT).

• Pääajatuksena makron käyttämisessä ovat seuraavat seikat

• 1) Ylläpidon työmäärän minimointi

• Makro ja transformaation kautta muokattava makrokutsu ovat ETL ohjelmoijalle helpoin mahdollinen tapa lisätä DB2 päivitysrutiineja ajoihin.

• Päivityksen tekninen toteutus on tehty vain kerran, joten sen ylläpito tarvitsee tehdä vain yhteen paikkaan. Ja virheselvityksien yhteydessä tehtävät muutokset tekevät korjauksen yhdellä kertaa kaikkiin päivitysohjelmiin.

• DI studio käyttö transformaation kautta.

• 2) DB2 taulujen ylläpidon tehokkuuden optimointi:

• Itse tehty makro antaa enemmän liikkumavaraa optimoinnin suhteen kuin vakioratkaisut olisivat antaneet.

• 3) OPDW:n oman ohjelmalogiikan liittäminen mukaan päivitysrutiiniin:

• Esimerkiksi loppupäivän käyttäminen historioitujen tietojen päivitysten yhteydessä.

DB2paivi makro

Page 34: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

• INSERT DB2 LOADILLA

• DB2Paivi makro hakee ladattavalle taululle rajan, jota suurempia rivimääriä päivitettäessä käytetään DB2:n LOADIA. Raja-arvot on määritelty parametritaulussa.

• Jos ladattavaa taulua ei löydy parametri taulusta käytetään oletusarvoa. Taulun load raja parametrin puuttumisesta tulee merkintä sas lokille. Ladattavat rivit, jotka rikkovat ladattavan taulun eheys rajoitteita talletetaan SAS-tauluun, joka on annettu VIRHETAULU parametrissa. DB2 LOAD lisää eheysrajoitteita rikkovat tietueet ensin DB2 tauluun, joka on jokaiselle datamartin taululle etukäteen tehty E-alkuinen taulu, tästä taulusta tietueet siirretään VIRHETAULU parametrissa määritettyyn SAS-tauluun, jonka jälkeen DB2 virhetaulu tyhjennetään.

• Bulk loadilla ladatut taulut jäävät check pending tilaan ja niiden taulutilat jäävät backup bending tilaan. Tällöin taulutiloista täytyy ottaa backup ja ladatuille tauluille pitää tehdä check (eheystarkistus), jotta tauluja voi taas käsitellä. Tätä varten ajojonoihin tulee liittää rutiini, joka tarkistaa latausten jälkeen ko. taulujen, sekä niiden taulutilojen tilat. Rutiini suorittaa tarvittaessa backupin ja checkin automaattisesti. Loadin jälkeen tauluihin rakennetaan indeksit uusiksi.

• DB2 LOAD tekee oman lokin logs hakemistoon nimelle db2load_taulun nimi_vvvvmmddhhmmss.log, jossa taulun nimi on ladattavan taulun nimi tai alias (näkymä). Loadissa tapahtuvista virheistä tulee virheilmoitus sas-lokille, joka kertoo vain, että virhe on tapahtunut. Tarkempi virhekoodi ja virheilmoitus tulee DB2 loadin omaan lokiin.

DB2paivi makro

Page 35: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

DB2paivi makro-tietotyypit DB2 / SAS • Tietotyypit DB2 / SAS (Base)

• DB2 aikatietotyypit DATE ja TIMESTAMP• SAS aika aina numeerisena käsittely DATE ja TIMESTAMP formaateilla

SAS:ssa. input(put(ajopaiva,date9.)||' '||

put(ajoaika,time14.6),datetime30.6)into: ctrl_muutoshetki%put muutoshetki: %sysfunc (putn(&ctrl_muutoshetki,datetime30.6))

(&ctrl_muutoshetki) ;Output: muutoshetki: 31JAN2007:22:00:00.000000 (1.4859E9)

• DB2paivi aikaleima numerosarja data _null_; dtm=datetime(); yyyymmdd=put(datepart(dtm), yymmddn8.); hh=put( hour(timepart(dtm)), z2.); mm=put(minute(timepart(dtm)), z2.); ss=put(second(timepart(dtm)), z2.); timestamp=yyyymmdd!!hh!!mm!!ss; call symput('timestamp', timestamp); run;• DB2 numeeriset tietotyypit esim. integer ja decimal ovat kaikki SAS

numeric tietotyyppisiä, SAS käsittely formaateilla. DB2paivi makrossa pyöristetään muutos aineiston numeeriset kentät, kohdetaulun mukaan (sarakkeiden desimaalien määrä).

Page 36: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

/*Esimerkki DB2PAIVI makron käytöstä suoralle DB2 insertille SAS datasta.

DB2 DW niminen kanta jossa on ASIAKAS niminen taulu. DB2PAIVI makro on tässä esimerkissä ajettuna istunnossa.

*/rsubmit;/* DB2 yhteys parametrit*/

%let db2_dwh_user = "user" ;%let db2_dwh_pw = "password" ;%let db2_dwh_schema = "DB2 schema" ;%let db2_dwh_datasrc = "data-source-name" ;

/* input taulu*/%let muutos = work.test_asiakas;

/* Makro muuttujat */%let insert_kentat = ;%let Loppupvm = ;%let Avaimet = ID NIMI;%let Kentat = A1 B1 C1 ALKUPVM LOPPUPVM MUUTOSHETKI;%let Yllapitotapa = %nrquote(INSERT);%let Kanta = %nrquote(DW);%let Taulu = %nrquote(VASIAKAS);%let Virhetaulu = %nrquote(Yes); /*EASIAKAS*/%let Commit = %nrquote(1000);%let Lokille = %nrquote(EIVIRHEITA);/* List of target columns to keep */%let keep = ID NIMI A1 B1 C1 ALKUPVM LOPPUPVM MUUTOSHETKI;

endrsubmit;

Page 37: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

/*===========================db2paivi===========================*/

rsubmit;%db2paivi(kanta=&kanta,taulu=&taulu,commit=&commit,muutos=&muutos,avaimet=&avaimet,kentat=&kentat,insert_kentat=&insert_kentat,loppupvm=&loppupvm,yllapitotapa=&yllapitotapa,lokille=&lokille,virhetaulu=&virhetaulu);

endrsubmit;

Page 38: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

/*MLOGIC(DB2PAIVI): Beginning execution.MLOGIC(DB2PAIVI): This macro was compiled from the autocall file /.../db2paivi.sas*//*MLOGIC(DB2PAIVI): Parameter KANTA has value _DW_

- Muuttuja päivitettävälle kannalle.MLOGIC(DB2PAIVI): Parameter TAULU has value _ASIAKAS_

- Muuttuja päivitettävälle taululle.MLOGIC(DB2PAIVI): Parameter COMMIT has value _1000_

- Muuttuja päivitettävälle kannalle. Kertoo kuinka monennen rivin jälkeen tehdään commit DB2:ssa. - Muutostapahtumille tulee commit olla 0. - Lisäystapahtumilla commit arvo on hyvä olla 500-1000.

MLOGIC(DB2PAIVI): Parameter MUUTOS has value sta.MASIAKAS- Muuttuja päivitys aineiston sisältävälle sta taululle SAS kirjastossa.

MLOGIC(DB2PAIVI): Parameter AVAIMET has value ID NIMI ...- Muuttuja jossa on ne sarakkeet, joita käytetään avaintietoina, kun tapahtumatietoja kohdistetaan kannan tauluun.

MLOGIC(DB2PAIVI): Parameter KENTAT has value ALKUPVM LOPPUPVM ...- Muuttuja jossa on ne sarakkeet, joita päivitetään, kun

tapahtumatietoja viedään kannan tauluun.- Vain tässä lueteltujen sarakkeiden tiedot päivittyvät.- Avaintietoja ei saa luetella tässä uudelleen.

Page 39: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

MLOGIC(DB2PAIVI): Parameter INSERT_KENTAT has value - Muuttuja jota käytetään vain kun käytetään UPDATE_JA_INSERT päivitystapaa. - Valitaan INSERT_KENTAT muuttujaan ne sarakkeet, joille halutaan antaa arvo

lisättäessä tauluun rivejä, mutta joita ei haluta päivittää muutostaulun arvoilla kun

avaimia vastaava rivi löytyy kohdetaulusta. Rivejä päivitettäessä, päivitetään vain ne sarakkeet jotka on valittu KENTAT muuttujaan.

* Ei arvoa esimerkki tapauksessaMLOGIC(DB2PAIVI): Parameter LOPPUPVM has value

- Muuttuja voimassaolon loppupäivälle.- Muuttujan arvoksi valitaan sarake, jota käytetään päivitettävien tietojen

rajaukseen, kun tapahtumatietoja viedään sellaiseen tauluun, jossa on historioituja tietoja.

- Kun tämä sarake on annettu, kohdistaa DB2PAIVI makro päivitystapahtumat vain sellaisiin riveihin, joiden voimassaolon loppupäivä on 2099-12-31 (eli riveihin, jotka ovat toistaiseksi voimassa).

* Ei arvoa esimerkki tapauksessa. Esimerkkinä tilanne, jossa päivitetään taulua, jossa ei ole historioituja tietoja. Silloin ei tarvita voimassaolon loppupäivä saraketta ollenkaan ja tämä muuttuja

jää ilman valintaa.

Page 40: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

• OPDW out SAS Access to DB2 libname vai SQLPassThrough

• SAS Access to DB2 libname

• SAS Access to DB2 generoi SAS kielen lauseet sql –lauseiksi omalla parhaalla näkemyksellään.

• hyödyntäminen pienissä OPDW tauluissa ok.

• SQLPassThrough

• Ei SAS käsittelyä.

• Kun käytetään DB2 spesifistä SQL:ää

• ”In general, non-SAS processing executed from a SAS application”.

• OPDW out tarpeiden vuoksi tehty db2sqlpassthroughextract makro yhtenäiseksi OPDW DB2 SAS poiminta rajapinnaksi. Db2sqlpassthroughextract makrossa mahdollista käyttää esim. SQL:n where ja exists lauseita.

OPDW out SAS Access to DB2 / SQLPassThrough

Page 41: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Macro DB2SQLPassThroughExtract(database=&database,schema=&schema,user=&user,password=&password,

DB2table=&SYSLAST, DB2where=&DB2where, select=&KEEP, num4byte=&num4byte, DB2ExistsTable=&DB2ExistsTable, DB2ExistsKeys=&DB2ExistsKeys, DB2ExistsWhere=&DB2ExistsWhere, out=&_OUTPUT, out_type=&out_type );

• Oletuksena tämä makro käyttää globaaleja DI studion generoimia makro muuttujia:

SYSLAST The input library and table name _OUTPUT The output library and table name KEEP The list of columns which should be read

Page 42: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

• OPDW out ETL (SQLPassThrough extract DB2 kannasta ja SAS yhdistely)

• OPDW tiedot viedään OPDW out:n kaksivaiheisella ETL prosessilla. Tällä jaolla minimoidaan DB2 kyselyjen määrä ja DB2-SAS tiedonsiirron määrä. Kukin tieto poimitaan ja siirretään vain yhden kerran. Jatkokäsittelyssä kutakin tietoa luetaan niin monta kertaa kuin se on tarpeen.

• Poiminnassa käytetään SAS näkymiä, joiden taustalla suoritetaan DB2:n natiivi SQL kyselyjä. DB2 tekee tietojen rajauksen, jotta tietoa siirrettäisiin mahdollisimman vähän. Tätä varten on tehty oma DB2SQLPassThroughExtract transformaatio SAS DI studioon ja db2sqlpassthroughextract makro.

• Kun tiedot on poimittu näkymän kautta, muokataan DB2 tiedot SAS tiedoiksi ja samalla optimoidaan rakenteet niin, että levytilaa käytetään mahdollisimman vähän. Tähän liittyen DB2SQLPassThroughExtract transformaatiossa lyhennetään numeeristen tietojen kentän pituutta 8 tavusta 4 tavuun, jos se on mahdollista.

• Poimitut tiedot lajitellaan jatkossa tehtäviä yhdistelyjä varten sopivimpaan järjestykseen ennen kuin ne talletetaan levylle.

OPDW out SAS Access to DB2 / SQLPassThrough

Page 43: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

• Varsinaista tiedon muokkausta ei tehdä tässä vaiheessa. Tämä on hyvä ratkaisu niin loogisen selkeytensä, testattavuutensa kuin tehokkuutensakin vuoksi. Poiminnassa tehdään ainoastaan poimintaa, jossa kukin tieto poimitaan ja siirretään vain yhden ainoan kerran. Testiympäristöjen hallinnassa saamme tähän välitason, jonka tilanne voidaan pitää samana, vaikka DW:n tilanteen ja OPDWOUT tilanteet muuttuisivatkin.

• Osa DB2 tauluista on partitioitu ja tällaisten taulujen lukua varten on tehty oma Select Partiton transformaatio. Tämä transformaatio ei tee mitään muuta kuin alustaa SYSLAST makromuuttujaan input taulun (joka on itse asiassa DB2 näkymä) nimen tilalle partitioidun fyysisen taulun nimen. Tätä transformaatiota kannattaa käyttää kaikkien partitioitujen taulujen lukurutiineissa. Näin varmistamme sen, että DB2 poiminta on näiltäkin osin niin nopea kuin mahdollista.

• Joissakin tilanteissa tietojen muokkaus on tehtävissä tehokkaimmin niin, että on vain yksivaiheinen prosessi, jossa tietojen poiminta, yhdistely ja muokkaus tehdään DB2:n puolella ja lajittelu yhtäaikaisesti SAS:in puolella. Seuraavissa tapauksissa OPDW out tiedot luetaan suoraan OPDW:stä: 1) Poiminnassa poimitaan tietoa, jota ei viedä kuin yhteen OPDWOUT tauluun, joten ratkaisu on DB2-SAS tiedonsiirron osalta optimoitu2) Poimintalogiikka on sellainen, että sen saa parhaiten optimoitua DB2 SQL kyselyssä3) Poimintalogiikka on niin suoraviivainen, että sen ohjelmointi ja ylläpito DB2 SQL kyselyssä ei aiheuta ylimääräisiä ongelmia

Page 44: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

• Esimerkki OPDW out:n luonnissa SQLPassThrough:n avulla, poiminta ja yhdistely DB2:ssa ja lopputulos SAS:n

1) DB2 yhteyden luonti ympäristökohtaisia kanta, skeema ja käyttäjämäärityksiä käyttäen/* Luodaan DB2 yhteys autoexecissä alustetuilla yhteysparametreilla */ connect to db2 as db2sqlpt (

database =&db2_dw_datasrc. schema =&db2_dw_schema. user =&db2_dw_user. password=&db2_dw_pw. );

• 2) SAS näkymä, joka saa tietonsa DB2 SQL kyselyltä- muutetaan sarakkeiden nimiä tarvittaessa- muutetaan numeeristen kenttien pituus 8 tavusta 4 tavuun, jos mahdollista- päivämäärät, kellonajat ja pienet kokonaisluvut (<2.000.000) voidaan ja kannattaa muuttaa- desimaalilukuja ja aikaleimoja (timestamp, datetime) ei saa muuttaa /* Tehdään DB2->SAS siirto ja sen kentänpituuksien muutokset */ create view &_output. as select ORG ,ID ,ID2 , A_loppupvm1 as A_loppupvm_tallettaja length=4 , A_loppupvm2 as A_loppupvm_kasittelija length=4 , A_tila_loppupvm length=4 ... (tästä poistettu joukko sarakkeita)

Page 45: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

from connection to db2sqlpt

3) DB2 SQL kysely DB2:n natiivimuodossa

/* Sulkujen sisällä DB2:n puolella suoritettava SQL kysely, josta tiedonsiirto saa tiedot. HUOMAA: DB2 kyselyn lopussa olevaa ; merkkiä ei saa laittaa sulkujen

sisällä olevan kyselyn loppuun.

*/ (SELECT A.ORG AS PANKKI ,A.ID ,T.ID2 ... (tästä poistettu joukko sarakkeita)

FROM &db2_dw_schema..VA...

INNER JOIN &db2_dw_schema.. VB ON ...

WITH UR );

4) DB2 yhteyden katkaisu

/* Puretaan DB2 yhteys */ disconnect from db2sqlpt;

Page 46: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Tietovaraston kantojen virheet ja häiriötilanteet

• DB2 ongelmat/virheet

• DB2 taulu on suuren load:in jälkeen ei luettavassa tilassa.

WARNING: The following ERROR/WARNING is being ignored (due to ERRLIMIT option):

ERROR: CLI execute error: [IBM][CLI Driver][DB2/HPUX-IA64] SQL0668N

Operation not allowed for reason code "1" on table ”DW.TS12345". SQLSTATE=57016

The number of ERROR/WARNINGs occurred so far: 1.OPDW: TAULU ON CHECK PENDING TILASSA

Page 47: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Tietovaraston kantojen virheet ja häiriötilanteet

• DB2 ongelmat/virheet

• Taulutila loppuu (yleisin). Huom! DB2 ilmoitus tässä virheessä ollut harhaanjohtava. Yleensä taulutila virheistä tulee selvemmät ilmoitukset. Esim. ”could not allocate more space...”.

ERROR: CLI execute error: [IBM][CLI Driver] CLI0125E Function sequence error. SQLSTATE=HY010

NOTE: Statements not processed because of errors noted above.

Page 48: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Tietovaraston kantojen virheet ja häiriötilanteet

• DB2 ongelmat/virheet

• Muita, taulu samanaikaisesti toisella prosessilla käytössä.

ERROR: [IBM][CLI Driver][DB2/HPUX-IA64] SQL0911N The current transaction has been rolled back because of a

deadlock or timeout. Reason code "68". SQLSTATE=40001

Page 49: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

• Virheiden korjaus rutiinit SAS ja DB2 taulut

• DB2 delete /update / insert käyttöoikeuksien mukaan

• SAS delete /update / insert käyttöoikeuksien mukaan

• SAS taulujen päivitykset

• Base SAS:n kautta

• DB2 taulujen päivitykset

• yleensä tehdään nyt Base SAS:n kautta käyttäen proc sql:ää.

• voidaan tehdä myös Base SAS:n kautta SAS data vaiheen avulla (merge).

• voitaisiin tehdä myös suoraan DB2 kantaan DB2 työkalulla (Optim / DB2 ControlCenter).

Tietovaraston kantojen virheet ja häiriötilanteet

Page 50: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

• OPDW hyödyntäminen on sovellus tai käyttäjä kohtaista

• OPDW hyödyntäminen pääsääntöisesti OPDW out SAS tauluista.

• datamartit jotka hyödyntävät OPDW:n tietoja lukevat tietonsa OPDW out:n SAS tauluista.

• muille alustoille välitettävien output liittymien data tehdään OPDW out:n SAS tauluista.

• Yksittäishyödyntäjät saattavat käyttää sekä OPDW DB2 tauluja että OPDW out SAS tauluja.

• Löytyy myös kombinaatioita OPDW:n SAS ja DB2 hyödyntämiselle (molemmat tietolähteet käytössä).

• Vanhat järjestelmät lukevat tietonsa osittain OPDW:stä ja osittain OPDW out:n SAS tauluista.

Eri hyödyntämistavat tietovaraston DB2 ja SAS tauluille/näkymille

Page 51: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

• Jos SAS sovellus lukee OPDW tietoja myös suoraan DB2 tauluista on mahdollista että joudutaan tekemään myös OPDW optimointia SAS optimoinnin lisäksi.

• H raportointi käyttää osaa OPDW tiedoista OPDW DB2 kannasta suoraan ja osaa OPDW out SAS rajapinnasta.

• H raportoinnille oma näkymä/select jossa asiakkaan nimi joinattu OPDW DB2 taulusta H sovelluksen DB2 taululle.

• OPDW asiakastauluun tehtiin uusi indeksi H raportoinnin haku tekijöille.

• Tehokkuus eri kyselyissä DB2 ja SAS, SAS tai DB2. Haetaanko tietoa DB2 kannasta vaiko SAS taulusta vaiko molemmista.

• Tehottomin vaihtoehto on yleensä tehdä kysely jossa yhdistetään SAS ja DB2 taulut SAS istunnossa.

• Tehokkuus näkökulma. Tehdään kysely siellä missä se on tehokkainta. Tämä saattaa muuttua kun taulujen datamäärät muuttuvat.

Eri hyödyntämistavat tietovaraston DB2 ja SAS tauluille/näkymille

Page 52: DB2-tietokannan hyödyntäminen SAS-ohjelmistolla

Kiitos!

•Kysymyksiä ?