Információs rendszerek a gyakorlatban 2. Előadás Adatkezelés a SAS rendszerben
Miről lesz szó az előadáson Mi a SAS adatállomány (SAS dataset) és miért van rá szükség? Hogyan működik a DATA step? Milyen információkra van szüksége a SAS rendszer- nek, hogy SAS adatállományokat hozzon létre? Milyen adatbeviteli stílusok vannak, amelyek megengedettek az INPUT utasításban? Milyen adatbeviteli módok vannak a SAS rendszerben?
Miért van szükség SAS adatállományra? A SAS adatelemzési és feldolgozási eljárásokat nyújt, amelyek megoldhatják a felmerülő, az információ feldolgozáshoz és kinyeréshez kapcsolódó feladatainkat Az első lépés: az adatokat a SAS számára értelmezhető formába kell hozni, el kell érni, hogy a rendszer felismerje azokat Ezután lehet majd feldolgozni, elemezni és jelentéseket előállítani
Adatbeviteli módok nyers adatok DATA utasítás más SAS utasítások az elemzés eredménye SAS eljárások SAS adatál- lomány Itt vagyunkIde szeretnénk eljutni DATA step PROC step Jelentések
A DATA step 3 összetevője nyers adatok DATA utasítás INPUT utasítás További utasítások SAS adatál- lomány
SAS adatállományok létrehozása módosítással DATA utasítás SET, MERGE, MODIFY vagy UDDATE További utasítások Régi SAS adatál- lomány Új SAS adatál- lomány
A SAS adatállomány szerkezete A SAS téglalap alakú struktúrába (táblázat, mátrix) szervezi az adatokat Ha már egy SAS adatállományban vannak az adataink, akkor további DATA stepekkel módosíthatjuk, illetve sok egyéb SAS eljárással elemezhetjük Ez a téglalap struktúra sorokból és oszlopokból áll. A sorokat megfigyeléseknek, az oszlopokat változóknak nevezzük. Nyers adatállományban a sorok neve rekord, az oszlopoké mező
Hallgatók nyers adatai Neptun_ kod NevSzak Kredit_in dex2009 Kredit_inde x2010 GHT325 Kovács János PTI_BSc Z6SD23 Németh Lajos GI_BSc T385R2 Szabó Csilla GI_BSc PXRYW6 Nagy Krisztián PTI_MSc XS714K Pap Boldizsár GI_MSc adatmezők
Hallgatók SAS adatállománya Az adatok az Informatikai Kar hallgatóinak tanulmányi eredményeit tartalmazzák Neptun_ kod NevSzak Kredit_ind ex2009 Kredit_inde x2010 GHT325Kovács JánosPTI_BSc Z6SD23Németh LajosGI_BSc T385R2Szabó CsillaGI_BSc PXRYW6Nagy KrisztiánPTI_MSc XS714KPap BoldizsárGI_MSc megfigyelés változó adat érték
SAS adatállományok felépítése Egy SAS adatállomány két részből áll A leíró (descriptor) rész az adatállományban lévő rekordok tulajdonságairól szóló informá- ciókat tartalmazza úm. A változók nevét és típusát, a megfigyelések számát, a létrehozás dátumát továbbá bizonyos operációs rendszertől függő információkat (pl. engine) A tartalom részben a konkrét adat értékek vannak strukturáltan felsorolva (SAS belső adatszerkezet)
Adatállományok ideiglenes létrehozása 1.data hallgatok; 2. input Neptun_kod $ 1-6 Nev $ 7-27 Szak $ Kredit_index2009 Kredit_index2010; 3. Valtozas = Kredit_index Kredit_index2009; 4. datalines; 5.GHT325 Kovács János PTI_BSc Z6SD23 Németh Lajos GI_BSc T385R2 Szabó Csilla GI_BSc PXRYW6 Nagy Krisztián PTI_MSc XS714K Pap Boldizsár GI_MSc ; 11.run;
A program elemzése Az egyszintű névadással ideiglenes adatállományt hozunk létre, amely csak a munkaszakasz (session) alatt létezik, annak lezárultával törlődik. Az ideiglenes adatállományok a WORK könyvtárban tárolódnak Az ideiglenes adatállományokra való hivatkozásnál elegendő csak egyszintű nevet használni, azaz a hallgatok és work.hallgatok nevek ugyanarra az adatállományra hivatkoznak
A hallgatok SAS logja 1 DATA hallgatok; 2 INPUT Neptun_kod $ 1-6 Nev $ 7-27 Szak $ Kredit_index2009 Kredit_index2010; 3 Valtozas = Kredit_index Kredit_index2009; 4 DATALINES; NOTE: The data set WORK.HALLGATOK has 5 observations and 6 variables. NOTE: DATA statement used (Total process time): real time 0.76 seconds cpu time 0.00 seconds 10 ; 11 RUN;
Állandó SAS adatállományok Ehhez a WORK helyett más SAS könyvtárral van szükségünk (természetesen olyanra, melyre írási jogunk is van) Egy ilyen logikai-fizikai könyvtár hivatkozást a libref utasítással tehetünk meg: LIBNAME libref ‘a-SAS-könyvtárunk-neve’; libref: annak a könyvtárnak a logikai neve, ahol a SAS fájlainkat tároljuk, érvényes SAS névnek kell lennie de csak 8 hosszú lehet ‘a-SAS-könyvtárunk-neve’ : a SAS könyvtárunk fizikai neve, azaz olyan név melyet az operációs rendszer felismer és így attól függ
Példa állandó SAS adatállományra LIBNAME mylib 'C:\SAS\DATA'; DATA mylib.hallgatok; INPUT Neptun_kod $ 1-6 Nev $ 7-27 Szak $ Kredit_index2009 Kredit_index2010; Valtozas = Kredit_index Kredit_index2009; DATALINES; GHT325 Kovács János PTI_BSc Z6SD23 Németh Lajos GI_BSc T385R2 Szabó Csilla GI_BSc PXRYW6 Nagy Krisztián PTI_MSc XS714K Pap Boldizsár GI_MSc ; RUN;
A LOG fájl 12 LIBNAME mylib 'C:\SAS\DATA'; NOTE: Libref MYLIB was successfully assigned as follows: Engine: V9 Physical Name: C:\SAS\DATA 13 DATA mylib.hallgatok; 14 INPUT Neptun_kod $ 1-6 Nev $ 7-27 Szak $ Kredit_index2009 Kredit_index2010; 15 Valtozas = Kredit_index Kredit_index2009; 16 DATALINES; NOTE: The data set MYLIB.HALLGATOK has 5 observations and 6 variables. NOTE: DATA statement used (Total process time): real time 0.00 seconds cpu time 0.00 seconds
Mi a DATA step SAS utasítások egy sorozata, amely a DATA utasítással kezdődik A DATA utasítás jelzi, hogy egy új SAS adatállományt hozunk létre és el is nevezi azt A DATA lépésben lévő utasítások lefordítódnak és szintaktikus ellenőrzésre kerülnek Ha az utasítások szintaktikusan helyesek, akkor végre- hajtódnak egyébként nem Legegyszerűbb formájában a DATA step egy ciklus, amely automatikus kiírási és visszatérési műveletekből áll
A DATA step folyamatábrája
A fordítási (compile) szakasz A végrehajtásra elküldött DATA stepnél a SAS ellenőrzi a szintakszist majd elvégzi a fordítást a megfelelő gépi kódra A kód végrehajtása során az alábbiak jönnek létre: – input puffer – program adatvektor – leíró információ
Input puffer Egy olyan logikai terület a memóriában, melyet a SAS arra használ, hogy oda a nyers adatállomány rekordjait egyenként beolvassa végrehajtáskor Ha a SAS egy már létező SAS adatállományból olvas be, akkor közvetlenül a program adat vektorba töltődnek az adatok
Program adatvektor Egy olyan logikai terület a memóriában, melyet a SAS arra használ, hogy felépítse az adatállományt, egy időben egy megfigyelést kezelve. A program végrehajtásakor a SAS beolvassa az adatokat az input pufferből vagy létrehozza azokat a végrehajtható SAS utasításokkal. Ezután a SAS a változókhoz értéket rendel a program adatvektorban. Végül a SAS kiírja ezeket az értékeket mint egy megfigyelést az output adatállományba. A változók mellett két további változó is létrejön az _N_ és _ERROR_. Az _N_ a DATA step iterációs lépéseinek számlálója. Az _ERROR_ jelzi ha hiba fordult elő. Egyik se íratódik ki az adatállományba.
Leíró információk A SAS adatállományról szóló információk, pl. az adatállomány és a változók jellemzői. A SAS létrehozza és karbantartja ezeket a leíró információkat.
A végrehajtási (execution) szakasz A DATA step minden végrehajtható utasítása pontosan egyszer hajtódik végre az iteráció minden lépésében. Ha van nyers adatállomány, akkor a SAS az input pufferbe olvas. Ezután hozzárendeli a megfelelő értéket a megfelelő változóhoz és a program adatvektorba teszi. Emellett kiszámolja a program által létrehozott új változók értékeit. Amikor a DATA step végére ér a következő 3 lépést hajtja végre
A DATA step lezárása Kiírja az aktuális megfigyelést a program data vektorból a SAS adatállományba A program visszamegy a DATA step elejére A program data vektorban lévő összes változót hiányzó értékre állítja kivéve azokat a változókat melyeket a RETAIN utasításban meghatároztunk és az _N_ és _ERROR_ automatikus változókat Ha van még új rekord a program újra végrehajt, ha nincs akkor lezárja az adatállományt és a következő DATA vagy PROC lépésre lép.
Példa DATA stepre 1.data hallgatok; 2. input Neptun_kod $ 1-6 Nev $ 7-27 Szak $ Kredit_index2009 Kredit_index2010; 3. Valtozas = Kredit_index Kredit_index2009; 4. datalines; 5.GHT325 Kovács János PTI_BSc Z6SD23 Németh Lajos GI_BSc T385R2 Szabó Csilla GI_BSc PXRYW6 Nagy Krisztián PTI_MSc XS714K Pap Boldizsár GI_MSc ; 11.run;
Az utasítások értelmezése 1.A DATA utasítás elkezdi a DATA stepet és elnevezi az adatállományt 2.Az INPUT utasítás 5 változót hoz létre, megmondja hogyan olvasson be a SAS az input pufferből és hozzárendeli az értékeket a változókhoz a program data vektorban 3.Ez a hozzárendelési utasítás egy új változót hoz létre, kiszámolja az értékét minden iterációban majd a program data vektorba írja 4.A DATALINES utasítás jelöli a bemenő adatok kezdetét. Az üres ; jelzi a bemenő adatok és a DATA step végét.
A DATA step folyamata A végrehajtásra elfogadott DATA stepet a SAS automatikusan fordítja majd végrehajtja Fordítási szakasz: létrejön az input puffer, a program adatvektor és a leíró információk a hallgatok adatállományra