STORED PROCESS KJØRT FRA SAS VISUAL ANALYTICS FANS I STAVANGER - 10.03.2016, MARIT FISKAAEN
2 STP OG VA INNLEDNING En stored process (STP) er et SAS program som er lagret på en server. I SAS Visual Analytics (VA) kan man kjøre stored processer. I VA er det ikke et eget kodevindu, men med denne muligheten har man stor fleksibilitet om man f.eks. har komplekse beregninger og vil at man fra VA skal kunne vise resultat av beregningene kjørt med ulike parameterverdier. Man kan så laste datasettet laget med et gitt parametervalg til LASR og så bruke VA til å lage rapporter Datasettet som brukes av STP er trenger ikke å være lastet til LASR selv om STP en kjøres fra VA STP kode EG Link STP VA VA rapport - Beregninger, selekteringer, - Kode last til LASR - Når STP kjøres fra VA, laste datasett til LASR - VA rapport basert på datasettet lastet til LASR
STP OG VA INNLEDNING 3 Vi skal se på flg. 1. STP uten prompt 2. STP med prompt 3. STP som laster datasett til LASR 4. Vi lager histogram med nye LASR data 5. STP basert på listetabell. 6. STP som inneholder egendefinerte funksjoner 7. «Stored Process Reports» fra SAS 9.3
STP UTEN PROMPT STP OG VA
5 STP UTEN PROMPT LAGER STP I EG Eksempel kode EG: proc print data=sashelp.cars label noobs; var Make Model Invoice; run; Høyreklikk på Program og velg «Create Stored Process».
6 STP UTEN PROMPT SETT INN STP I VA I VA «Rapportdesigner» velg objektet «Stored Process» og dra det over til høyre. Velg aktuell STP og åpne. Laget rapporten kalt: 20151215_STP_VA_rapport
7 STP UTEN PROMPT SETT INN STP UTEN PROMPT I VA Rapporten som er resultat av kjøringen av STP en åpnes så (datasett sashelp.cars er ikke lastet til i LASR):
STP MED PROMPT STP OG VA
9 STP MED PROMPT LAGER STP I EG Vi setter inn STP med prompt (et så enkelt eksempel kunne heller hatt logikk i VA, men dette er kun for illustrasjon av muligheten for parametrisering): Data work.cars; set sashelp.cars; Invoice_ny=Invoice*&Faktor.; run; proc print data=work.cars label noobs; var Make Model Invoice Invoice_ny; run;
10 STP MED PROMPT DEFINERER PROMPT I STP Vi definerer promptet «Faktor» (numerisk) i forbindelse med at man oppretter STP i EG:
11 STP MED PROMPT SETT INN STP I VA Tilsvarende som vi gjorde for STP en uten prompt, går vi i VA og legger til STP Vi ser nå at Invoice_ny er lik Invoice multiplisert med 2.
STP SOM LASTER DATASETT TIL LASR STP OG VA
13 STP LAST TIL LASR STP MED PROMPT SOM LASTER TIL LASR TABELL I EG er det en egen node for «Upload to LASR» (under «Tasks» + «Data»). Denne koden kan så brukes i STP: Dobbelklikk her, finner kode tab
14 STP LAST TIL LASR SETTER INN STP I VA SOM TIDLIGERE VIST Fyller inn prompt så kjøres STP en og vi ser at datasettet CARS_ENDRET er lastet til LASR:
VA FIGUR BASERT PÅ NYTT LASR DATASETT STP OG VA
16 VA FIGUR VA HISTOGRAM BASERT PÅ NY LASR TABELL Rapporten ligger i fila «My Folder/ FANS STP/20151215_STP_VA_rapport» (sasdemo).
ENDRE VERDIEN FOR PROMPT I RAPPORTER STP OG VA
ENDRE PROMPT SKJERMBILDER VISE HVORDAN VI ENDRER VERDIENE I PROMPT FOR RAPPORT (I RAPPORTVISNINGEN) 18 Fil + Vis Rapport: Litt vanskelig å klikke på riktig sted, for å vise boksen. Her er det benyttet VA 7.2. Med VA 7.3 så må man velge Classic design for å endre verdi for prompt ref. http://support.sas.com/kb/5 7/009.html
19 ENDRE PROMPT VA 7.3 ENDRE TIL CLASSIC DESIGN Report viewer, application options: Velg settings under denne:
STP MED PROMPT BASERT PÅ LISTETABELL STP OG VA
VERDI FOR PROMPT FRA LISTETABELL STP BASERT PÅ LISTETABELL 21 Eksempel der vi ved å klikke i listetabell kjører STP med parameter for raden man klikker på i listetabellen. Kunne tenke seg at man hadde en rapport basert på en annen tabell, der var det bilmerker med en annen type info, så kan man klikke på rad for ytterligere informasjon fra kjøring av STP.
VERDI FOR PROMPT FRA LISTETABELL LAGER STP I EG 22 Eksempel: 1) I EG: proc print data=sashelp.cars label noobs; where make="&merke."; var Make Model Invoice; run; 2) I EG - Lag STP. Her ikke lagt merke som parameter i selve STP en «STP_CARS_Bilmerke».
VERDI FOR PROMPT FRA LISTETABELL LAGER RAPPORT I VA 23 3) I VA velg datasett: 4)Sett inn en listetabell med bilmerke I VA kalt rapporten: 20151222_STP_VA_Bilmerke
VERDI FOR PROMPT FRA LISTETABELL KOBLING TIL STP OG PARAMETERE 24 Høyreklikk + Legg til kobling + Ekstern kobling:
VERDI FOR PROMPT FRA LISTETABELL KOBLING TIL STP OG PARAMETERE 25 Velg «Koble til Stored Process»:
VERDI FOR PROMPT FRA LISTETABELL KOBLING TIL STP OG PARAMETERE 26 Velg «Legg til en ny parameter»:
VERDI FOR PROMPT FRA LISTETABELL KOBLING TIL STP OG PARAMETERE 27 Sett inn kildekolonne og makrovariabel som mål dvs. «Merke»
VERDI FOR PROMPT FRA LISTETABELL VIS RAPPORT 28 Gå på file + vis rapport: I rapportvisningen ser vi om vi dobbelklikker på et bilmerke: Her hadde jeg lagt inn samme link to ganger. Den ene kan slettes.
VERDI FOR PROMPT FRA LISTETABELL VIS RAPPORT 29 I report designer velg Visning + «Vis interaksjoner». Til høyre ser vi så flg: Resultat når dobbelklikket: Her kan vi slette siden fikk dobbelt med linker.
STP MED EGENDEFINERTE FUNKSJONER STP OG VA
STP MED EGENDEFINERTE FUNKSJONER STP MED EGENDEFINERTE FUNKSJONER 31 Benyttet STP med egendefinerte funksjoner Her forventet gjenstående levetid som er funksjon av andre funksjoner Hvis STP feil med tomme verdier sette inn noe som default i STP!
STP MED EGENDEFINERTE FUNKSJONER EKSEMPEL PÅ FEILMELDING 32 Klikk her for å legge inn prompt, kjører med parameterverdier går fint. Kan legge inn defaultverdi.
STP MED EGENDEFINERTE FUNKSJONER RAPPORT SEKSJON 1 33 20151222_STP_VA_Etx
STP MED EGENDEFINERTE FUNKSJONER RAPPORT SEKSJON 2 34
STP MED EGENDEFINERTE FUNKSJONER KODEN BRUKT TIL STP 35 LIBNAME LIB BASE "C:\Program Files\SASHome\SASFoundation\9.4\inttech\sample\Functions_MF"; /* proc fcmp outlib=lib.fun.functions; function my(a, b, logc, x) label='dødsintensitet for en x-åring'; return ( a + b * 10 ** (logc * x)); endsub; function lx(a, b, logc, x) label='antall levende x-åringer'; return (10 ** (5 - b / (logc) * ((0.4342944818) ** 2) * (((10 ** logc))** (x) - 1) - (x) * a * 0.4342944818)); endsub; function ETx(a, b, logc, x) label='forventet gjenstående levetid for en x-åring'; omega = 110; element = 0; do tau = 0 To (omega - x); element = element + my(a, b, logc, x + tau) * lx(a, b, logc, x + tau) / lx(a, b, logc, x) * tau; end; return (element - 0.5 * ( my(a, b, logc, omega) * lx(a, b, logc, omega) / lx(a, b, logc, x) * (omega - x))); endsub; run; */ /* proc fcmp listfuncs inlib=lib.fun; run; */ /*Makrovariabler, R-63 for menn:*/ /* %let a=0; %let b=0.000027; %let logc=0.042; */ data work.aldertabell; do alder=20 to 110 by 1; output; end; run; options cmplib=lib.fun; data work.forventet_rest_liv; set work.aldertabell;
STP MED EGENDEFINERTE FUNKSJONER ALTERNATIVT LAGE LINK TIL STP 36 Dra inn tekstboks (under «Annet») Sett inn tekst Sett inn URL (den kan finnes f.eks. ved å søke opp STP en fra «SAS Stored Process Web Application» Når man klikker på linken kommer boksen for parametervalg fram:
ROW LEVEL SECURITY I VA MAN ØNSKER KUN AT HVER GRUPPE SER EGNE TALL
ROW LEVEL SECURITY INNLEDNING 38 For VA rapporter er det ofte aktuelt at kun bestemte grupper ser egne tall (f.eks. avdeling). Eksempel: for datasettet cars så kan det være en gruppe som kun ser BMW: Opprett gruppe for BMW i SMC, Gr1_BMW Opprett bruker i SMC, User1_BMW Legge in row level security på tabellen cars_endret i VA Logg på med brukeren User1_BMW, ser kun rader med BMW
ROW LEVEL SECURITY OPPRETTET GRUPPE OG BRUKER I SMC 39 User1_BMW er medlem i Gr1_BMW. Opprettet Gr1_BMW og User1_BMW
ROW LEVEL SECURITY ROW LEVEL SECURITY I VA 40 Fra hovedmeny velg Administrator:
ROW LEVEL SECURITY BETINGELSE I VA 41 Har lagt til Gr1_BMW: Lagt filter:
ROW LEVEL SECURITY BETINGELSE I VA 42
ROW LEVEL SECURITY EKSEMPEL PÅ RAPPORT 43 Har laget en rapport. Logger på med User1_BMW Sasdemo brukeren ser alt:
SCHEDULERE RAPPORT FRA VA RAPPORT MED STP KJØRES PÅ VISSE TIDSPUNKT
SCHEDULERE RAPPORT FRA VA LAGER NY RAPPORTJOBB 45 Vi kan schedulere VA rapporter i rapport designer (dette kunne f.eks. vært rapporten med STP en vår):
SCHEDULERE RAPPORT FRA VA VELGER MOTTAKER AV E-POST 46 Hvis det ikke er registrert e- post addresser i SMC så vil man ikke få opp mottakere. Så lagt til e-post for sasdemo
SCHEDULERE RAPPORT FRA VA VELGE NÅR RAPPORTEN KJØRES 47
STP RAPPORT NYTT FRA SAS 9.3
49 STP-RAPPORT INNLEDNING «Stored process Report» ble introdusert i SAS 9.3. Ny type metadataobjekt Stored process output er «cashed» slik at man kan se output uten å kjøre STP en på ny. Når man lager STP rapporten så kan man sette opp hvor ofte man skal oppdatere (dvs. kjøre STP en). Dette kan være nyttig om STP en bruker lang tid på å kjøre eller om det er data vi vet at vi ikke trenger å oppdatere mer enn på gitte tidspunkt.
50 STP-RAPPORT EKSEMPEL I SAS Management Console, SMC:
51 STP-RAPPORT EKSEMPEL
52 STP-RAPPORT EKSEMPEL Ikonet er annerledes for en STP-rapport enn for en STP.
53 STP-RAPPORT EKSEMPEL STP-Rapporten kan så legges inn i VA tilsvarende som vanlige STP er
OPPSUMMERING STP OG VA
55 STP OG VA OPPSUMMERT STP er er veldig fleksible. Kode fra et EG prosjekt kan legges inn i en STP. Vi har sett på noen enkle eksempler, men man kan tenke seg dette brukt for avanserte parametriserte beregninger som er vanskelig å legge inn i VA. Man kunne for eksempel tenke seg en stresstest av en portefølje som gjøres basert på forskjellige parametervalg (rente, arbeidsledighet, ). Resultatene kan lastes til LASR tabeller. Videre kan disse tabellene brukes til grunnlag for rapporter i VA. VA rapportene kan ha row level security og være schedulert. «Stored Process Report» kan brukes om man ønsker oppdatering kun på gitte tidspunkt.