Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Henrik Lähdeniemi Arto Valtanen

Samankaltaiset esitykset


Esitys aiheesta: "Henrik Lähdeniemi Arto Valtanen"— Esityksen transkriptio:

1

2 Henrik Lähdeniemi Arto Valtanen
DB2 - tietokannan hyödyntäminen SASin välineillä SAS Technical Club Henrik Lähdeniemi Arto Valtanen

3 DB2 - tietokannan hyödyntäminen SASin välineillä
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

4 OP-Pohjola-ryhmä on johtava finanssiryhmä Suomessa
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 asiakasta 1,3 miljoonaa omistajajäsentä pankki- ja vakuutusalan ammattilaista maan kattavin palveluverkosto

5 OP-Pohjola-ryhmän rakenne
Omistajajäsenet 221 jäsenosuuspankkia OP-KESKUS OSK Ryhmän ulkopuolisia osakkeen- omistajia POHJOLA PANKKI OYJ OP-Rahastoyhtiö Oy OP-Henkivakuutus Oy Helsingin OP Pankki Oyj Pankkitoiminta Muut tytäryhtiöt Varainhoito Vahinkovakuutus OP-KESKUS OSK:N TYTÄRYHTIÖT

6 Henkilöstö Henkilöstöä n. 12 750 osuuspankeissa n. 7 000 henkilöä
OP-Keskus -konsernissa n henkilöä, joista Pohjola-konsernissa noin 3 000 Keski-ikä noin 44 vuotta Naisia 75 %, miehiä 25 % Käytössä lyhyen ja pitkän ajan kannustejärjestelmät OP-Pohjola-ryhmän henkilöstöstä noin 94 % kuuluu OP-Pohjola-ryhmän henkilöstörahastoon. Rahasto aloitti toimintansa OP-Keskus valittu Suomen toiseksi parhaaksi työpaikaksi * *) Great Place to Work Institute 2009

7 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

8 DB2 - tietokannan hyödyntäminen SASin välineillä
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

9 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 / DB2:sta hyödyntävät SAS clientit: DI-Studio 3.4 EG 4.1 Base SAS Management Console

10 Tietopalveluympäristö
Batch IMS TCP/IP DB2 connect DB2 Tipa Pohjola IBM Z/OS SAS Applications TCP/IP SAS data Batch DB2 connect Metadata CICS Control-M DB2 OP IBM Z/OS Patrol DB2 HPCenter -server NFS TCP/IP TCP/IP FTP Archive SAS table

11 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 kpl. SAS sovelluksia yht. 62 kpl. Sovelluskoodeja n kpl.

12 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ä

13 Rajapinnat Datan suuruuden mukaan muutetaan taulujen latauksissa dbcommit optiotiota vaikka SAS makroilla DBCOMMIT=1000 (insert); 0 (update); (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.

14 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.

15 Poistetaan tauluja, näkymiä, indeksejä tai muita DBMS objecteja
Execute käskyt CREATE Luodaan tauluja, näkymiä, indeksejä tai muita DBMS objecteja DELETE Tuhotaan rivejä tauluista DROP Poistetaan 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

16 Execute options 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;

17 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;

18 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;

19 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: :23: Oletuksena NO ja tekee date tyyppisen sarakkeen datetime25.6 formaatilla näin: 26NOV2009:15:23: 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;

20 Rajapinnat

21 lokioptioita DB2: options sastrace =',,,d' ;
REMOTE(UNIX): DB2: AUTOCOMMIT turned ON for connection id no_name 0 SQL REMOTE(UNIX): no_name 0 SQL REMOTE(UNIX): DB2_1: Prepared: no_name 0 SQL REMOTE(UNIX): SELECT * FROM DDWH.TASKOK_ASIAKAS FOR READ ONLY no_name 0 SQL REMOTE(UNIX): no_name 0 SQL REMOTE(UNIX): DB2: COMMIT performed on connection no_name 0 SQL REMOTE(UNIX): no_name 0 SQL REMOTE(UNIX): DB2_2: Prepared: no_name 0 SQL REMOTE(UNIX): select COUNT_BIG(*) from DDWH.TASKOK_ASIAKAS FOR READ ONLY no_name 0 SQL

22 lokioptioita DB2: options sastrace =',,,s' ;
REMOTE(UNIX): Summary Statistics for DB2 are: no_name 0 SQL REMOTE(UNIX): Total row fetch seconds were: no_name 0 SQL REMOTE(UNIX): Total SQL execution seconds were: no_name REMOTE(UNIX): Total SQL prepare seconds were: no_name REMOTE(UNIX): Total SQL describe seconds were: no_name REMOTE(UNIX): Total seconds used by the DB2 ACCESS engine were no_name 0 SQL REMOTE(UNIX): no_name 0 SQL

23 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

24 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.

25 9.2: Table Server

26 DB2 - tietokannan hyödyntäminen SASin välineillä
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

27 Tietopalveluarkkitehtuuri
Operatiivinen liiketoiminta Tietopalvelualue: tietovarastointi ja tietopalvelut Liiketoiminnan ohjaus ja –kehittäminen Suunnittelu, seuranta, analysointi, ohjaus Yhteiskäyttöiset yhtenäiset tiedot DW Raportointi- ja analysointi- palvelut Tietolähteet OPDW Tieto- virta Talouden ohjaus ja vakavaraisuuden hallinta VakuutusDW Myynti, asiakkuudet ja palvelut ASO ICT:llä kehitysvastuu tietopalveluista, liiketoiminnat tilaavat uusia tietopalveluita ottamatta lähtökohtaisesti kantaa siihen, mistä varastosta tiedot saadaan Tavoitetilassa kukin tiedon luovuttaja luovuttaa tietonsa Tipa-alueelle kerran. Jos/kun ko tietoja tarvitaan eri tietopalveluissa, ne viedään sinne tämän saman yhden liittymän kautta joko suoraan tai yhteiskäyttöisen varaston kautta. Yhteiskäyttöiseen varastoon (jokaiseen) toteutetaan hyödyntämisrajapinta, jota kautta sen tiedot tarjotaan tietopalveluiden käyttöön. Tähän rajapintaan (out) voidaan tarvittaessa yhdistää tietoja eri yhtiöiden tietovarastoista. Kaikki tietopalvelut tarjotaan käyttöön saman portaalin kautta. Portaalissa hoituu tunnistautuminen ja roolin mukaisen näkymän rakentuminen. Itsenäiskäyttö ja analysointi ICT:n vastuulla oleva Tipa-infra Liiketoiminnan vastuulla olevat tietopalvelut

28 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ä

29 DW-out: Tietolähteet ja hyödyntäminen
Luottoriskimallinnus Hyödyntäjät Kampanjanhallinta Hyödyntäjät Hyödyntäjät Basel2 Vakavaraisuuslaskenta Tasetäsmäytykset Vastuulaskenta Vastuuryhmäpäättely OKO Vira DW-out Jälkipäivitys RHASO ASOOUT VakuutusDW MH-Kanta OPDW ASO

30 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).

31

32 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ä.

33 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.

34 DB2paivi makro 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ä.

35 DB2paivi makro 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.

36 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: JAN2007:22:00: (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ä).

37 /* 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;

38 /*===========================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;

39 /* 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 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.

40 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 tapauksessa MLOGIC(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 (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.

41 OPDW out SAS Access to DB2 / SQLPassThrough
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.

42 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

43 OPDW out SAS Access to DB2 / SQLPassThrough
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.

44 Varsinaista tiedon muokkausta ei tehdä tässä vaiheessa
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 optimoitu 2) 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

45 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 (< ) 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 ,ID , A_loppupvm1 as A_loppupvm_tallettaja length= , A_loppupvm2 as A_loppupvm_kasittelija length= , A_tila_loppupvm length=4 ... (tästä poistettu joukko sarakkeita)

46 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;

47 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

48 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.

49 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

50 Tietovaraston kantojen virheet ja häiriötilanteet
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).

51 Eri hyödyntämistavat tietovaraston DB2 ja SAS tauluille/näkymille
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.

52 Eri hyödyntämistavat tietovaraston DB2 ja SAS tauluille/näkymille
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.

53 Kiitos! Kysymyksiä ?


Lataa ppt "Henrik Lähdeniemi Arto Valtanen"

Samankaltaiset esitykset


Iklan oleh Google