PICTURE formater Klog på SAS 15. marts 2012
Agenda Hvad er et format Hvor adskiller et PICTURE format sig Teknik Eksempel 1 cprnr Eksempel 2 cprnr med "udsøgning" af fejlrecords Eksempel 3 et format, der reducerer til 1.000 kr. Eksempel 4 dit eget datoformat Eksempel 5 et datoformat til DB2 Spørgsmål Klog på SAS - 15. marts 2012 2
Hvad er et format? En ekstern repræsentation af en variabels værdisæt i et SASdatasæt bruges ved præsentation af data gemmes i et "SAS Catalog" "Ekstern" fordi repræsentationen ligger uden for data Selve variabel-værdierne er internt repræsenteret i et SAS datasæt Det betyder at SAS dybest set kun behøver 2 datatyper char(acter), alfanumerisk num(eric), numerisk Det er kvadratisk (enkelt)! Det er praktisk (fleksibelt og hurtigt)! Det er godt! Klog på SAS - 15. marts 2012 19-03-2012 3
Hvad er et picture format? Et "almindeligt" format "oversætter" en variabelværdi til noget andet (typisk mere forståeligt): fx 1 oversættes til Ja og 2 oversættes til Kvinde i en rapport den interne variabelværdi er stadig 1 hhv 2 Et picture-format er en skabelon eller en maske: fx vis 70282870 som +45 7028 2870 i en rapport fx vis 12548.45 som 12.548,45 DKK i en rapport den interne variabelværdi er stadig 70282870 hhv. 12548.45 det er "selvfølgelig" helt anderledes med tid PICTURE virker kun på numeriske variable Klog på SAS - 15. marts 2012 19-03-2012 4
Teknik type interval picture cprf low - high = '099999-9999'; navn maske Klog på SAS - 15. marts 2012 19-03-2012 5
Eksempel 1: Simpel formatering af et CPRnr Data 601881564 25610564 (nogen har tastet et telefonnummer ind i feltet) 562545814756 (her er brugt et kundenummer af en slags) Ønsket rapport 060188-1564 Klog på SAS - 15. marts 2012 19-03-2012 6
Eksempel 2: "Udsøgning" af fejl-records Indføre et mere korrekt interval og noget der ligger udenfor Afmærker, hvis der er fejl Klog på SAS - 15. marts 2012 19-03-2012 7
Teknik navn type interval 1 picture cprf maske 1 0101000000-3112999999 = '999999-9999' other = '0000000000000000' interval 2 maske 2 (prefix='fejl: '); prefix 2 (picture option) Klog på SAS - 15. marts 2012 19-03-2012 8
Eksempel 3: Et format der reducerer til 1.000 kr. Skal dække alle tal Skal vise korrekt fortegn Skal runde af efter 5-regel Ingen decimaler eller 1 decimal Klog på SAS - 15. marts 2012 19-03-2012 9
Teknik multiplier picture tkr low - <0 = '0.000.000.009 t.kr' (prefix='-' mult=0.001) 0 - high = '0.000.000.009 t.kr' (mult=0.001); multiplier Klog på SAS - 15. marts 2012 19-03-2012 10
Teknik format option round picture tkr (round) low - <0 = '0.000.000.009 t.kr' (prefix='-' mult=0.001) 0 - high = '0.000.000.009 t.kr' (mult=0.001); Klog på SAS - 15. marts 2012 19-03-2012 11
Eksempel 4: Et datoformat Formkrav (YYYYMMDD TTMMSS) Klog på SAS - 15. marts 2012 19-03-2012 12
Teknik maske directives picture driftts low - high = '(%Y%0m%0d %0H%0M%0S)' (datatype=datetime); picture option Klog på SAS - 15. marts 2012 19-03-2012 13
Directives %a abbreviated weekday name (for example, Wed). %A full weekday name (for example, Wednesday). %b abbreviated month name (for example, Jan). %B full month name (for example, January). %C long month name with blank padding (January through December) (for example, December). %d day of the month. %e day of the month as a two-character decimal number with leading spaces (" 1"- "31") (for example, 2 ). %F full weekday name with blank padding. %G year as a four-digit decimal number (for example, 2008). If the week that contains January 1 has four or more days in the new year, then it is considered week 1 in the new year. Otherwise, it is the last week of the previous year and the year is considered the previous year. %H hour (24-hour clock). %I hour (12-hour clock). %j day of the year as a decimal number (1 366), with leading zero. %m month (1 12). %M minute (0 59). %n number of days in a duration as a decimal number (maximum of 10 digits) (for example, 25). %o month (1-12) with blank padding (for example, " 2"). %p equivalent to either a.m. or p.m. %q abbreviated quarter of the year string such as 1, 2, 3, or 4. %Q quarter of the year string, such as Quarter1, Quarter2, Quarter3, or Quarter4. %s fractional seconds as decimal digits (for example,.39555). The number of digits formatted is the number of digits to the right of the decimal point that is specified when you use the format. SAS rounds fractional seconds to accommodate the number of digits specified for fractional seconds. %S seconds (0 59), allowing for possible leap seconds. %u weekday as a one-digit decimal number (1 7 (Monday - Sunday)) (for example, Sunday=7). %U week number of the year as a decimal number (0 53). Sunday is considered the first day of the week. %V week number (01 53) with the first Monday as the start day of the first week. Minimum days of the first week is 4. %w weekday as a one-digit decimal number (0 6 (Sunday through Saturday)) (for example, Sunday=0). %W week number (0 53) with the first Monday as the start day of the first week. %y year without century (0 99) (for example, 93). %Y year with century as a four-digit decimal number (1970 2069) (for example, 1994). %z UTC time-zone offset. %Z time-zone name. %% the % character. Klog på SAS - 15. marts 2012 19-03-2012 14
Eksempel 5: DB2 format Formatet skal have masken YYYY-MM-DD-TT.MM.SS.ssssss Klog på SAS - 15. marts 2012 19-03-2012 15
Teknik picture db2ts low - high = '%Y-%0m-%0d-%0H.%0M.%0S.%s' (datatype=datetime) ; "mili"-sekunder Klog på SAS - 15. marts 2012 19-03-2012 16