SAS Wprowadzenie do Systemu I Języka 4GL Seweryn Kowalski 2006 3/9/2006 1
SAS wprowadzenie System SAS został oparty na architekturze MultiVendor Architecture (MVA), dzięki czemu 90% kodu jest niezależna od platformy. System wygląda tak samo na różnych platformach, jak i sposób pracy jest niezależny od systemu operacyjnego. Zastosowano także technologie MultiEngine Architecture, co pozwala na łatwy dostęp do danych niezależnie od postaci w jakiej są one zapisane. 3/9/2006 2
Moduł BASE Jest podstawą systemu SAS, Udostępnia podstawowe narzędzia pozwalające na zarządzanie i przetwarzanie danych. Moduł BASA składa się z następujących składników: SAS language język programowanie służący do zarządzania danymi, SAS procedures oprogramowanie narzędziowe do analizy danych i tworzenia raportów, macro facility narzędzia wspomagające prace z systemem DATA step debugger narzędzie programistyczne pozwalające rozwiązywać problemy z programami pracującymi z danymi Output Delivery System (ODS) system pozwalający uzyskać dane wyjściowe (tabele, raporty itp.) w wielu prostych i powszechnych formatach np.: HTML, listy (ASCII) SAS windowing environment graficzny interfejs, powalający w łatwy i przyjazny sposób pracować z systemem. 3/9/2006 3
Interfejs Systemu SAS Umożliwia on m. in. Edycje i uruchamianie programów, uruchamianie narzędzi i aplikacji Systemu SAS, przeglądnie rezultatów wykonanej pracy, a także zarządzanie bazą danych. Po uruchomieniu systemu pojawiają się następujące okna: SAS Explorer zarządzanie strukturami SAS, Results zarządzanie wynikami działania programów, Editor edytor tekstów, wykorzystywany do edycji programów pisanych w SAS-4GL (jest ot edytor kontekstowy) Output prezentacja tekstowych wyników (okono tylko do odczytu) Log okno komunikatów. Uwaga: Przy zamykaniu okna Log i Output nie jest kasowana ich zawartość, jednak tekst znajdujący się w tych oknach może być wyczyszczony polecenie Clear All z menu EDIT. Praca z oknami: Może być wyświetlone wiele okien, ale tylko jedno z nich jest aktywne, Do danego okna zawsze można wrócić wybierając z menu VIEW odpowiednia opcje, Skrót klawiszowy do przełączenia okien to CTRL+F6, 3/9/2006 4
Komendy systemu SAS Wybierając pozycje z menu wydawane są komendy systemu. Istnieje kilka sposobów wydawania komend: Wybór opcji z menu, Wybór przycisku w pasku narzędziowym, Wpisanie komendy w linii komend, Wykorzystanie klawiszy funkcyjnych, Instrukcja DM w kodzie programu Przykłady komend: END Zapisanie informacji zawartej w aktywnym oknie i zamknięcie okna CANCEL Zamknięcie aktywnego okna bez zachowania zmian ENDSAS, BYE Zakończenie pracy z systemem SASLOG,OUTPUT, PGM, WEDIT Uaktywnienie (ew. otwarcie) jednego okien KEYS Uaktywnienie okna KEYS (skróty klawiszowe) X < komenda sys > Uaktywnienie interpretera poleceń systemu operacyjnego NOTEPAD Okno notatnika 3/9/2006 5
Baza Danych Wszelkie informacje podlegające obróbce przechowywane są w Informacyjnej Bazie Danych (IBD): Podstawowym elementem IBD jest biblioteka, W bibliotekach przechowywane są zbiory z danymi i katalogi, Katalogi przechowują obiekty nie będące zbiorami danych, W bibliotece nie można umieścić innej biblioteki. Biblioteka 1 Dane 1 Dane 2 SAS Katalog Pozycja 1 Pozycja 1 3/9/2006 6
Biblioteka SAS Jest najwyższa struktura w Systemie SAS Jest to odwołanie do istniejącej struktury w systemie operacyjnym, Umożliwia dostęp do różnych obiektów Systemu SAS, W bibliotece przechowywane są przede wszystkim dane w formie tabele. Właściwości bibliotek: W systemie do bibliotek odwołuje się poprzez referencje, Bibliotek odpowiada strukturze systemie operacyjnym (Np. w Windows, Unix to katalog zawierajacy zbiory danych), Z punkty widzenia systemu SAS biblioteka jest tylko wskazaniem na taka strukturę, Referencje są aktywne jedynie podczas trwania sesji systemu SAS, Istnieje możliwości zdefiniowania bibliotek, które będą wskazywać na kilka struktur w (katalogów systemu operacyjnego) Każda biblioteka na zdefiniowaną nazwę, która musi się zaczynać od litery lub znaku _ i może mieć maksymalnie 8 znaków. Uwaga Biblioteki nie są fizycznie tworzone, Biblioteka nie może zostać skasowana w systemie SAS. Można jedynie anulować deklaracje biblioteki. Po skasowaniu wszystkich elementów biblioteki pozostanie ona biblioteką pustą. Skasowanie katalogu w OS spowoduje usunięcie biblioteki, Aby zadeklarować nową bibliotekę w systemie musi istnieć struktura z nią związana, Ponieważ biblioteka jest referencją, te same dane fizyczne mogą być dostępne w bibliotekach różnych nazwach wskazujących na tę samą strukturę w OS, Przy każdym uruchomieniu należy zadbać o właściwe zadeklarowanie bibliotek z danymi. 3/9/2006 7
Biblioteka SAS Możliwe typy obiektów tworzących zawartość biblioteki: DATA Tabela z danymi, nazywana też zbiorem danych VIEW Perspektywa, czyli tabela będąca logiczna definicją wybierającą dane z różnych tabel ACCESS Opis dostępu do danych zapisanych w innych formatach (np. XLS, DBF) CATALOG Katalog z różnymi obiektami informacyjnymi nie będącymi tabelami danych MDDB Wielowymiarowa baza danych PROGRAM Skompilowana postać programu w języki SAS-4GL 3/9/2006 8
Biblioteka SAS Biblioteki systemowe SASHELP Biblioteka tylko do odczytu, Zawiera elementy i moduły SAS napisane w języku SAS (m. in. Asystent, SAS/EIS) Zawiera standardowe elementy umożliwiające działanie systemu, jak również obiekty związane z konfiguracja systemu. SASUSER Zawiera konfigurację danej sesji SAS (m. in. wygląd okien, definicje. klawiszy, biblioteki do automatycznego podłączenia), Wiele narzędzi korzysta z tej biblioteki do przechowywania informacji o swoich bieżących ustawieniach, Narzędzia systemu SAS przeszukują ją domyślnie. WORK Biblioteka tymczasowa, jej zawartość jest kasowana przy końcu każdej sesji, Jest biblioteką roboczą, Jeżeli w procedurach 4GL nie zdefiniowano biblioteki to domyślnie wszystkie zbiory i inne obiekty tworzone w wyniku wykonanego kodu umieszczane są w tej bibliotece, Narzędzia systemu przeszukują ją domyślnie. Tworzenie nowej biblioteki: Wykorzystanie okna Explorer, Instrukcja LIBNAME w SAS-4GL 3/9/2006 9
Katalogi Katalog jest wewnętrzną strukturą SAS pozwalająca na przechowywanie różnorodnych obiektów nie będących zbiorami danych. Są strukturą jednopoziomową nie można w nich umieszczać innych katalogów Są obiektami fizycznymi ich usunięcie powoduje nieuchronne skasowanie całej zawartości Obiekty w katalogu to tzw. pozycje katalogowe (ang. entries) Nie można w nich umieszczać obiektów DATA, VIEW, KATALOG, MDDB, ACCESS Zbiór typów istniejących katalogach jest predefiniowany (nie można w nich umieszczać typów nie znanych dla systemu SAS) Odwołanie się do pozycji katalogowej to podanie całej jej nazwy: BIBLIOTEKA.ZAWARTOŚĆ.POZYCJA.TYP TOOLBOX Definicja paska narzędzi 3/9/2006 CLASS Klasa dla obiektów narzędzi SAS 10 Typ SOURCE IMAGE GRSEG FRAME PROGRAM SCL EIS FORMAT REPORT SLIST CBT KEYS PMENU Opis Plik tekstowy Grafika rastrowa w formacie SAS Grafika wektorowa w formacie SAS Aplikacja graficzna stworzona przy pomocy SAS/AF Aplikacja stworzona przy pomocy SAS/AF Kod źródłowy aplikacji SAS/AF Aplikacja stworzona przy pomocy SAS/EIS Mechanizm formatowania danych w systemie SAS Definicja raportu dla procedury REPORT Dynamiczna struktura pamięciowa Plik pomocy w formacie SAS Definicja klawiatury Definicja menu
DATA SET Są podstawowym sposobem przechowywania informacji w systemie SAS, Istnieją dwa rodzaje zbiorów data set: Data View Rodzaje te są nierozróżnialne z punktu widzenia języka 4GL, Data to fizyczne tablice zawierające zbiory danych, View to logiczne połączenie wielu zbiorów danych (pozwalają oszczędzić fizyczną przestrzeń nośnika danych, w tego rodzaju zbiorach nie można modyfikować poszczególnych rekordów), W tabelach przechowujemy tylko teksty oraz informacje numeryczne, 3/9/2006 11
DATA SET Do zbioru odwołujemy się podając dwuczłonową nazwę: biblioteka.nazwa_zbioru Jednoczłonowa nazwę zbiór tymczasowy: 3/9/2006 12
DATA SET Zbiory danych zawierają trzy składniki: Informacje opisujące zawartość zbioru Wartości danych dane, na których dokonujemy analizy Indeksy (opcjonalnie) 3/9/2006 13
DATA SET 1. Opis danych znajdujących się w jednym lub kilku SAS data set (kilku View) 2. Wartości danych 3. Oddzielny plik z nazwami przechowywanymi jako data set. 3/9/2006 W bibliotece nie można umieszczać zbiorów DATA i VIEW o tej samej nazwie gdyż SAS traktuje je jednakowo. 14
DATA SET Tabele relacyjne (wartości danych) Zawierają dane w zbiorach danych, Zbudowane są z: wierszy (obserwacje) kolumn (zmienne) Wszystkie zmienne w danej kolumnie są tego samego typu, Dodanie nowych kolumn do tabeli wiąże się zazwyczaj fizycznym skopiowaniem całej tabeli, Dodanie nowych wierszy to doklejenie ich na końcu tabeli, Różnica między tabelami SAS, a arkuszem kalkulacyjnym jest taka, że w SAS wiersze i kolumny mają różne określone właściwości, natomiast w arkuszy wiersze i kolumny możemy traktować zamiennie Każda zmienna musi być powiązana z obserwacją. W przypadku braku obserwacji dla zmiennej SAS wprowadza pusta daną do zbioru 3/9/2006 15
DATA SET Nagłówek zbioru Zapisane są w nim informacje dotyczące zbioru jako całości jak i poszczególnych zmiennych, Informacje dotyczące całego zbioru to np.: Nazwa zbioru, Etykieta (ciąg znaków dowolny), Typ zbioru, Liczba obserwacji, Liczba zmiennych, Data utworzenia, Data ostatniej modyfikacji, Format zapisu zbioru, Informacje dotyczących zmiennych (atrybuty) Nazwa zmiennej, Typ Długość (Długość bajtach), Etykieta (do 256 znaków, będzie pojawiał się zamiast nazwy zmiennej), Format sposób prezentacji danych, Informat informacja jak przekształcić tekst do odpowiedniej wartości zmiennej, Informacja o indeksowaniu 3/9/2006 16
DATA SET 3/9/2006 17
Konwencja nazw w Systemie SAS 32 znakowe nazwy 8 znakowe nazwy Zmienne Nazwy zbiorów Katalogi Makrozmienne Nazwy makr Biblioteki Referencje do nazw plików Formaty Informaty Pozycje katalogowe Etykiety instrukcji 3/9/2006 18
formaty i informaty Format to przekształcenie pewnego zbioru argumentów zbiór wartości. Formaty wykorzystuje się miedzy innymi do zmiany sposobu prezentowania danych. Informaty to przekształcenie zamieniające wejściowy ciąg znaków na wewnętrzną reprezentacje danych. Są stosowane do zapewnienia prawidłowego wprowadzenia danych do bazy SAS. Nazwy formatów i informatów zawsze kończą się kropką lub zawierają kropkę przed cyfrą oznaczającą liczbę miejsc dziesiętnych, nazwy te nie mogą się kończyć cyfrą. Liczba występująca przed kropką oznacza maksymalną długość sformatowanego tekstu. Zastosowania: Konwersja typów i konwersja danych, Mapowanie kod-opis, np. baza w wewnętrznej reprezentacji używa kodów K I M, natomiast na wydrukach i raportach widzimy np. KOBIETA i MĘŻCZYZNA 3/9/2006 19
SAS 4GL Język 4GL zajmuje się obsługą zbiorów, pozwala na dostęp do zbiorów, odczytanie obserwacji, zapis obserwacji do danego zbioru, program składa się z bloków zwanych STEP ami, które wykonywane są sekwencyjnie, najpierw kompilator czyta linie kodu i interpretuje, a następnie je wykonuje, kompilacja wykonywana jest sekwencyjnie, a komunikacja między poszczególnymi blokami (step), odbywa się za pomocą makrozmiennych, mikroprogramów lub z wykorzystaniem zbioru danych. Każda instrukcja bloku musi kończyć się średnikiem. Wielkość liter nie ma znaczenia (wyjątek porównanie wartości zmiennych) 3/9/2006 20
SAS Processing Do pisania programów w języku SAS-4GL służy edytor kontekstowy: Enhanced Editor, Wykonanie programu następuje poprzez wydanie komendy submit (lub z menu Run->Submit) Typy Bloków: DATA Step Wczytuje dane wejściowe Np. data sets, Pliki, itd. Przetwarza (modyfikuje) dane Produkuje dane wyjściowe Np. data sets, Pliki Raporty PROC Step Analiza danych w data setach, Tworzenie raportów (tekstowe, graficzne) 3/9/2006 21
SAS 4GL Instrukcja LIBNAME Służy do definiowania nowych bibliotek w systemie SAS z wykorzystaniem języka 4GL. LIBNAME libref <engine> sicieżka_do_biblioteki <opcje>; engne def. Sposób dostępu do danych (np.: v6 do danych w wersji 6, oracle bezpośredni dostęp do danych bazy ORACLE) opcje zależne od systemu operacyjnego i danego motoru Czas życia biblioteki: Do końca sesji SAS (biblioteka może być inicjalizowana podczas startu systemu) Aż do wydania polecenia: LIBNAME libref clear; Polecenie usuwa bibliotekę, ale nie zbiory na dysku 3/9/2006 22
SAS 4GL DATA STEP Algorytm DATA Step data students; input name $ sex $ note1 note2; avg=mean(note1,note2); datalines; Anna F 4 5 Ian M 3. Eva F 1 4 ; W obrębie poszczególnych kroków tworzona jest pętla główna, która wykonuje następujące czynności: 1. czytanie kolejnej obserwacji z wejściowych zbiorów danych (lub wiersz z wejściowych plików tekstowych), 2. wykonane są instrukcje będące treścią danego kroku, 3. przekształcona obserwacja zapisywana jest do pliku określonego w tymże kroku Pętla główna wykonywana jest tak długo, aż nie napotka końca obserwacji w zbiorze wejściowym. 3/9/2006 23
SAS 4GL DATA STEP PDV Program Data Vector jest to struktura tworzona podczas kompilacji DATA STEP, jest to wektor (jednowymiarowa tablica) zawierająca zmienne istniejące w obrębie danej iteracji tzn. zmienne, które istnieją w zbiorach wejściowych jak i zmienne zadeklarowane (użyte) w kodzie, po zakończeniu każdego obrotu pętli głównej cała zawartość jest zapisywana do zbioru wynikowego tworząc w nim kolejną obserwację zmienne w PDV pojawiają się w takiej kolejności, w jakiej zostały użyte lub zadeklarowane w DATA STEP. na początku obrotu pętli wartości tych zmiennych, które nie pochodzą ze zbioru danych ustawiane są na braki danych (zero). 3/9/2006 24
DATA STEP - przykłady Wybór obserwacji Wysyłanie na wyjście tylko wybranych obserwacji data male; set students; where sex= M ; data male; set students (where=(sex= M )); data male; set students; if sex= F then delete; data male; set students; if sex= M ; 3/9/2006 25
DATA STEP - przykłady Wybór zmiennej Wysyłanie na wyjście tylko wybranych zmiennych data avg_only; set students; drop sex note1 note2; data avg_only; set students; keep name avg; data avg_only; set students (drop= sex note1 note2); data avg_only; set students (keep= name avg); 3/9/2006 26
DATA STEP - przykłady Tworzenie nowych zmiennych data pass (drop= sex note1 note2 avg); set students; if avg < 2 then result='passed'; else result='failed'; 3/9/2006 27
DATA STEP - przykłady Operacje wyjścia tworzenie nowych danych data males females; set students; if sex='f' then output females; if sex='m' then output males; drop sex; 3/9/2006 28
DATA STEP - przykłady Generacja danych data generator; do x=1 to 100; y=rannor(-1); output; end; 3/9/2006 29
DATA STEP - przykłady Łączenie DATA SET data all; set males females; males(in=m) tworzy automatic variable m (m=1 dla obserwacji ze zbioru males; m=0 poza tym) data all2; set males(in=m) females(in=f); if m then sex= M ; if f then sex= F ; 3/9/2006 30
DATA STEP - przykłady Łączenie DATA SET data lib; input name $ @8 date yymmdd10. title $20. ; datalines; Anna 2000/12/14 Hamlet Anna 2000/12/14 SAS Programming Witek 2001/07/12 XML ; proc sort data=students out=students_sort; by name; data st_books; merge students_sort lib; by name; keep name sex title; 3/9/2006 31
PROC STEP - wprowadzenie Jest blokiem składającym się z wykonania jednej, gotowej procedury SAS. Większość PROC STEP ów czyta dane z jednego zbioru i zapisuje informacje do innych zbiorów lub tworzy raport tekstowy lub graficzny, Składnia jest ściśle związana z daną procedurą, ściśle od niej zależy PROC nazwa_procedury DATA=zbiór_danych opcje_procedury; instrukcje; RUN; Od DATA STEP różni się tylko tym, że należy podać nazwę procedury i zbiór wejściowy dla danej procedury. 3/9/2006 32
PROC STEP - wprowadzenie Przykładowe instrukcje, jakie mogą być użyte: WHERE warunek ograniczenie zbioru przetwarzanych obserwacji, BY zmienne wymuszenie przetwarzania w grupach wyznaczonych przez podane zmienne klasyfikacyjne (sortowanie wg. zmiennych po by), FORMAT zmienna format sformatowanie zmiennej podanym formatem, TITLEn tytuł - zadeklarowanie n-tego tytułu dla raportów, FOOTNOTEn zadeklarowanie n-tej stopki dla raportów. Przykład: proc print data=sasuser.cap2001; where Cap1st>14; by CapEcon; title Lista uczniów ; Wyświetla obserwacje ze zbioru sasuser.class, w których zmienna age jest większa od 11. Prezentowane wyniki są grupowane względem zmiennej sex. proc gmap data=dane.ludnosc map=maps.poland all; title Mapa Polski ; id wojew; choro zalud / coutline=black nolegend; Procedura ta wyświetla mapę z gęstością zaludnienia. 3/9/2006 33