sas-feil kavalkade · ous hf pÅ 10 punkter nord-europas største sykehus, består av ullevål,...
TRANSCRIPT
Litt om meg:
• Født 1973.
• Jobbet med SAS siden 1999.
• Begynte i forsikring, har jobbet i helse siden 2009.
• Kaller meg selv for datavarehusutvikler, men har også en del oppgaver i forhold til rapportutvikling, uttrekk, analyser og systemansvar.
OUS HF PÅ 10 PUNKTER
Nord-Europas største sykehus, består av Ullevål, Rikshospitalet, DNR, og Aker.
1.166.000 pol. Kontakter
100.000 døgnopphold
50.000 dagopphold
500.000 liggedøgn
350.000 radiologiske undersøkelser, 100.000 strålebehandlinger
8.500.000 klinisk kjemiske labanalyser
1950 senger i bruk
Brutto årsverk 18.600, 17.200 månedslønnede
Budsjett ca 22 milliarder
LIS & Virksomhetsstyring
-SyntaksfeilDette er feil som SAS markerer som ERROR i loggen.
-Semantiske feilSAS gir ingen feil på koden, men man får ikke det resultat man
forventer. Ofte gir SAS en WARNING i loggen (men slett ikke
alltid).
-Tekniske feilSAS-systemet virker ikke av årsaker som ikke er direkte knyttet
til koden man har skrevet. Disse arter seg forskjellig. Oftest får
man en feilmelding i loggen som man ikke forstår noe av.
options DATASTMTCHK=ALLKEYWORDS;data nyttdatasettset andredata;
run;
options DATASTMTCHK=NONE;data nyttdatasettset andredata;
run;
data semifeil;var1 = 1;var2 = var1 + 2
run;
34 data semifeil;35 var1 = 1;36 var2 = var1 + 237 run;
___22
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, -, /, <, <=, <>, =, >, ><, >=, AND, EQ, GE, GT, IN,
LE, LT, MAX, MIN, NE, NG, NL, NOTIN, OR, ^=, |, ||, ~=.
22 GOPTIONS ACCESSIBLE;23 options DATASTMTCHK=ALLKEYWORDS;24 data nyttdatasett25 set andredata;
___57
ERROR 57-185: SET is not allowed in the DATA statement when option DATASTMTCHK=ALLKEYWORDS. Check for a missing semicolon in the
DATA statement, or use DATASTMTCHK=NONE.
26 run;
28 options DATASTMTCHK=NONE;29 data nyttdatasett30 set andredata;31 run;
NOTE: The data set WORK.NYTTDATASETT has 1 observations and 0 variables.NOTE: The data set WORK.SET has 1 observations and 0 variables.NOTE: The data set WORK.ANDREDATA has 1 observations and 0 variables.NOTE: DATA statement used (Total process time):
real time 0.08 secondscpu time 0.03 seconds
Syntaksfeil
data ubalanse;format tekst1 $1000.;tekst1 = '&rapport. &dato.!!" OUS LIS";
run;
data helt_aar;format start slutt eurdfdd10.;do mnd = 1 to 12;
start = mdy(mnd, 1, 2017);slutt = intnx('month', start, 1)-1;dager = sum(slutt, -start, 1);output;
run;
28 data helt_aar;29 format start slutt eurdfdd10.;30 do mnd = 1 to 12;31 start = mdy(mnd, 1, 2017);32 slutt = intnx('month', start, 1)-1;33 dager = sum(slutt, -start, 1);34 output;35 36 run;
_117
ERROR 117-185: There was 1 unclosed DO block.
23 data ubalanse;24 format tekst1 $1000.;25 tekst1 = '&rapport. &dato.!!" OUS LIS";26 run;27 25 tekst1 = '&rapport. &dato.!!" OUS LIS";
______________________________49
NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release. Inserting white space
between a quoted string and the succeeding identifier is recommended.
28 data helt_aar;29 format start slutt eurdfdd10.;30 do mnd = 1 to 12;31 start = mdy(mnd, 1, 2017);32 slutt = intnx('month', start, 1)-1;33 dager = sum(slutt, -start, 1);34 output;36 run;
32 slutt = intnx('month', start, 1)-1;_____388
ERROR 388-185: Expecting an arithmetic operator.
Syntaksfeil
data missingverdier;var1 = 1; var2 = .;sum1 = var1 + var2;sum2 = sum(var1, var2);
run;
Semantikk-feil
data ekstab;format tekst1 $10.;tekst1 = '123';tall1 = 321;output;tekst1 = 'ABC';tall1 = '111';output;
run;
data konvertert;set ekstab;sum1 = tekst1 + tall1;sum2 = sum(tekst1, tall1);
run;
33 data konvertert;34 set ekstab;35 sum1 = tekst1 + tall1;36 sum2 = sum(tekst1, tall1);37 run;
NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column).35:10 36:14
NOTE: Invalid numeric data, tekst1='ABC' , at line 35 column 10.NOTE: Invalid numeric data, tekst1='ABC' , at line 36 column 14.tekst1=ABC tall1=111 sum1=. sum2=111 _ERROR_=1 _N_=2NOTE: Missing values were generated as a result of performing an operation on missing values.
Each place is given by: (Number of times) at (Line):(Column).1 at 35:17
23 data ekstab;24 format tekst1 $10.;25 tekst1 = '123';26 tall1 = 321;27 output;28 tekst1 = 'ABC';29 tall1 = '111';30 output;31 run;
NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column).
29:11
Semantikk-feil
data liten_tab;kat_var = 1;var1 = 123;output;var1 = 321;output;var1 = .;output;kat_var = .;var1 = 101;output;
run;
proc summary data= liten_tab;class kat_var;variable var1;output out=sum_missing sum=;
run;
proc summary data= liten_tab missing;class kat_var;variable var1;output out=sum_missing2 sum=;
run;
Semantikk-feil
data forlitetall;format litetall 3. stortnok 8.;litetall = 1973;alder = sum(year(today()), -litetall);stortnok = litetall;
run;
proc print =forlitetall;run;
data forlitentekst;format litentekst $3.;litentekst = "FANS";
run;
proc print =forlitentekst;run;
Semantikk-feil
data datoer;format dt_var date9. dttm_var datetime20.
dttm_varkort dttm_varkort2 datetime9.;dt_var = today();dttm_var = datetime();dttm_varkort = dttm_var;dttm_varkort2 = '01mar2017:00:00:00'dt;
run;
proc print data=datoer;run;
data utregning;set datoer;dager = sum(dttm_varkort, -dttm_varkort2);keep dager;
run;
proc print data=utregning;run;
Semantikk-feil
Semantikk-feil
* Amerikansk vs norsk;data ukedag;
* Lørdag;dag1 = weekday("04mar2017"d);* Søndag;dag2 = weekday("05mar2017"d);ukenr1 = week("05mar2017"d);ukenr2 = week("05mar2017"d, 'v');
run;
data org;format enhet enhetkode $10.;
input enhet $1-5 enhetkode $;cards;AVD A AAAVD B ABAVD C ACAVD D AD;
data orgtillegg;format enhet enhetkode $10.;
input enhet $1-5 enhetkode $;cards;AVD D AD;
proc append base=org data=orgtillegg force;quit;
Ekte feil
data org_fmt;format start label fmtname $10.;set org;start = strip(enhetkode);label = strip(enhet);fmtname = '$org_eks';drop enhet enhetkode;
run;
proc format cntlin=org_fmt;quit;
53 proc format cntlin=org_fmt;ERROR: For format $ORG_EKS, this range is repeated, or values overlap: AD-AD.54 quit;
Ekte feil
data trans;format enhetkode $10.;input enhetkode $ tulletall;
cards;AA 123AA 213AB 312AB 495AC 484AC 348AD 383AD 976;
data transfiks_feil;set trans;enhet = put(enhetkode, $org_eks.);
run;
70 data transfiks_feil;71 set trans;72 enhet = put(enhetkode, $org_eks.);
_________484
NOTE 484-185: Format $ORG_EKS was not found or could not be loaded.
Ekte feil
data ett_aar;do mnd = 1 to 12;
verdi = round(rand('normal')*1000, 100);output;
end;run;
options validvarname=V7;proc transpose data=ett_aar out=trans_aar;id mnd;var verdi;
quit;
options validvarname=ANY;proc transpose data=ett_aar out=trans_aar2;id mnd;var verdi;
quit;
Ekte feil
data tab1;format enhetkode $10.;input enhetkode $ tulletall;
cards;AA 123AA 213AB 312AB 495AC 484AC 348AD 383AD 976;
data tab2;format enhetkode $10. endato date9.;input enhetkode $ endato date9.;
cards;AA 01jan2017AB 01feb2017AC 01mar2017AD 01apr2017;
data sattsammen;merge tab1(in=a) tab2(in=b);
run;
NOTE: There were 8 observations read from the data set WORK.TAB1.NOTE: There were 8 observations read from the data set WORK.TAB2.NOTE: The data set WORK.SATTSAMMEN has 8 observations and 3 variables.
Sjekkliste
-Les loggen.
-Sjekk endringer (programmering, kilder, system, dato).
-Sjekk mot forventninger (gjerne en gammel log).
-Kjør koden steg for steg.
-Be om hjelp.
-Google.
The usual suspects:-Feilsøking (options obs=1000).
-Hardkoding.
-Macro (options symbolgen mprint mlogic).
-Endring metadata.