sas-feil kavalkade · ous hf pÅ 10 punkter nord-europas største sykehus, består av ullevål,...

18
SAS-feil kavalkade Viggo Skar [email protected] Oslo Universitetssykehus HF (OUS)

Upload: others

Post on 02-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SAS-feil kavalkade · 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

SAS-feil kavalkade

Viggo Skar

[email protected]

Oslo Universitetssykehus HF (OUS)

Page 2: SAS-feil kavalkade · 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

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.

Page 3: SAS-feil kavalkade · 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

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

Page 4: SAS-feil kavalkade · 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

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

Page 5: SAS-feil kavalkade · 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

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

Page 6: SAS-feil kavalkade · 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

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

Page 7: SAS-feil kavalkade · 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

data missingverdier;var1 = 1; var2 = .;sum1 = var1 + var2;sum2 = sum(var1, var2);

run;

Semantikk-feil

Page 8: SAS-feil kavalkade · 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

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

Page 9: SAS-feil kavalkade · 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

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

Page 10: SAS-feil kavalkade · 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

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

Page 11: SAS-feil kavalkade · 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

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

Page 12: SAS-feil kavalkade · 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

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;

Page 13: SAS-feil kavalkade · 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

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

Page 14: SAS-feil kavalkade · 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

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

Page 15: SAS-feil kavalkade · 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

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

Page 16: SAS-feil kavalkade · 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

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

Page 17: SAS-feil kavalkade · 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

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.

Page 18: SAS-feil kavalkade · 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

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.