SAS-Dictionary Tables zur Nutzung von Selektionen am - SAS-Wiki

Werbung
Programmierung
SAS Dictionary Tables zur Nutzung von
Selektionen am Beispiel des
AXA-CRM-Explorers
Thomas Rüdiger
AXA Service AG
Marketing/Direktvertrieb
50828 Köln (INK-4.49)
[email protected]
Zusammenfassung
Neben SAS-Spezialisten gibt es in Unternehmen Anwender mit hohem Selektions- und Analyse-Bedarf . Statt zeitintensiver Anfragen an
Analytiker besteht ein allgemeiner Wunsch an “Quick and Clean“-Lösungen. Das im AXA-Kampagnenmanagent eingesetzte Business
Objects erwies sich als inflexibel hinsichtlich neuer Datenstrukturen
bzw. neuer Kampagnendaten. Neben hohen administrativen Aufwand
fielen zusätzliche externe Kosten an (BO-Designer). Die AXALösung beruht auf einer SAS/AF-Oberfläche, die die SAS-DictionaryTables nutzt (‘CRM-Explorer‘).
Keywords: CRM Explorer, SAS/AF, SAS Dictionary Tables, Referential
Constraints, PROC CONTENTS, PROC MEANS, PROC FORMAT, PLZGraphik.
1
Die Oberfläche des Data Managers innerhalb des
CRM Explorers
Der CRM-Explorer ist eine komplette SAS/V8-Lösung und startet mit einer
Auswahlliste von CRM-Highlights.
Der ‘Data Manager‘ im CRM Explorer erstellt und startet das SAS-Selektions-Programm. Bedingungen und Sortierung sind über Untermenüs regulierbar.
311
T. Rüdiger
Der CRM-Explorer (derzeit in SAS/V8) benötigt nur wenige SAS-Module.
Auf der SAS-Lizenzseite entstehen keine zusätzlichen Kosten außer den
‘Standard-Modulen‘:
• SAS/BASE und SAS/STAT
• SAS/ACC-PC File Formats und/oder SAS/ACC-ODBC
• Datenbank-Schnittstellen nach Bedarf (DB2, Oracle, ..)
• SAS/AF (nur für Weiterentwicklung)
2
SAS Dictionary Tables
SAS-D
Dictionary Tables sind spezielle Read-Only-Data Views, die Informationen über den aktuellen Stand einer SAS-Session beinhalten und nur über
SQL-Syntax oder über vorbereitete Views in SASHELP erreichbar sind: z.B.
ist SASHELP.VCOLUMN ein SQL-View auf DICTIONARY.COLUMNS.
Einige Prozeduren wie PROC DATASETS, PROC CONTENTS, PROC
FORMAT und einige Elemente des Data Steps {attrn(DSID,‘*‘) mit *=nobs,
nvar, ..} bedienen sich direkt der Dictionary Tables.
Permanente SAS-Dateien ohne Libname-Bezug in der neuen Quote-Notation
sind über die Dictionary Tables nicht erreichbar:
data ‘c:\SAS_Datei‘;Test=1;run;
312
Programmierung
Nähere Informationen zu Dictionary Tables sind im Internet zu finden unter:
http://v9doc.sas.com/cgi-bin/
sasdoc/cgigdoc?file=../proc.hlp/a000146905.htm
3
User-Schichten mit &sysuserid.
Der CRM-Explorer kennt derzeit über automatische Client-SAS-Makrovariable &sysuserid. zwei User-Schichten
a) SAS-Administratoren für SAS/AF-Design und Tabellenbereitstellung und
b) Anwender mit den Schwerpunkten: Auswahl von Feldern, Bedingungen,
Sortierungen, Mengenlehre (Join Types), distinct/non-distinct-Entscheidung
4
Dateienauswahl
Die Input-Dateien werden vom Administrator des CRM-Explorers über eine
Liste mit verfügbaren Dateien in den CRM-Explorer integriert - Vorteil:
geringer Administrationsaufwand! (Neue Datei=eine Zeile in Liste)
Zusätzliche externe Daten (xls, mdb, dbf, sas7bdat) werden mit zwischengeschalteter Qualitätsprüfung eingelesen. Der Datenimport beinhaltet folgende
Qualitätsprüfungen:
313
T. Rüdiger
Identifikation xls-Arbeitsmappen, mdb-Tabellen über ODBC und über die
_library-Methode in SAS/AF.
%let DATA=%str(c:\daten.xls);
%let Path=%str(DSN=Excel-Dateien;DBQ=&DATA.);
libname MSEXCEL odbc required="&Path.";
data MSEXCEL.MSEXCEL2;
set MSEXCEL.'Datenreihe_Basis$'n;
run;
Änderung von Variablennamen in V8-Notation
options validvarname=any; ...
Rename '1. Übung'n =UEBUNG
Typ-Transformation, z.B. put(PLZ,z5.) als PLZ
Existenzprüfung Key-Variablen (PNR, ...)
Prüfung des Primary Keys auf Eindeutigkeit
Import ausschließlich in benutzereigene Library analog SASUSER-Library
zur Vermeidung von ungewollten Updates
Datei wird an Datei-Auswahlliste des CRM-Explorers angehängt
5
Verknüpfungsregeln mit PROC CONTENTS
Der CRM-Explorer präferiert die PROC CONTENTS zum Auslesen der
Variablenattribute (Table-Header)
* CONTENTS BY PROC CONTENTS;
proc contents noprint data=PARENT out=mytable;
run;
* CONTENTS BY SQL;
proc sql; create table mytable as
select * from dictionary.columns
where libname='WORK' and memname=‘PARENT';
quit;
* CONTENTS BY SASHELP;
data mytable;
set sashelp.vcolumn(
where=(libname='WORK' and memname=‘PARENT‘));
run;
* CONTENTS BY OPEN/CLOSE-Statement;
data mydata;
RC=open(‘PARENT‘);
314
Programmierung
do i=1 to attrn(RC,‘varnum‘);
...;
end;
RC=close(RC);
run;
* CONTENTS BY SCL-List; *siehe: _dictionary-Methode;
Vorteile von PROC CONTENTS: leichteste Notation+ i.d.R. schnellster
Zugriff (abhängig von Anzahl verfügbarer Tabellen/Views)
Join-Variablen (Primary/Foreign Keys) zwischen je zwei Tabellen werden
aus dem PROC CONTENTS über Feldnamen und Hierarchiestufen (Granularität) definiert
Im Unterschied zu SAS/V9, bei der generelle Key-Beziehungen zwischen
Parent und Child Table über Referential Keys definierbar sind, werden im
CRM-Explorer Key-Beziehungen dynamisch mit mehrfachen PROC
CONTENTS definiert!
Frei definierbare Join-Beziehungen
(z.B. ‘on substr(a.Organummer,1,4)=b.RBLNR‘)
sowie andere Verknüpfungen als zwischen Parent und Child Table oder
‘Brother-Sister-Tables‘ werden demnächst genauso realisiert wie die Einbindung von Interessentendaten über Deduplikation.
Beispiel-Dateien: Der CRM Explorer erkennt über das PROC CONTENTS
die gemeinsame Variable Sales_Region der Tabellen PARENT und CHILD
als Verknüpfungsvariable
* Beispieldatei Parent-Table
PARENT (Tagesumsatz pro Region);
data PARENT (keep=Date Sales_Region Sales);
Date=date(); format Date deudfdd10.;
do Sales_Region =1 to 10;
Sales=round(100000*ranuni(date()),.2);output;end;
label Sales_Region=‘Region‘ Sales=‘Umsatz‘; format Sales
commax9.2;run;
* Beispielformat ‘Region‘;
proc format lib=WORK.FORMATS;value Region 1=‘RBL
Sandler‘ ...;run;
proc catalog c=WORK.FORMATS;modify Region.format
(description=‘RBL‘);quit;
315
T. Rüdiger
proc datasets lib=WORK;modify PARENT;format Sales_Region
region.;quit;
* Beispiel Child-Table CHILD (Letzter Umsatz pro
Region und Kunde);
data Child(keep=Sales_Region PNR Sales_PNR);set
SAMPLE;Weight1=0;
do PNR =10*Sales_Region to 10*Sales_Region+3;Weight1+1;
if Weight1<=2 then Weight=2**Weight1;else Weight=8;
Sales_PNR=Sales/Weight;output;end;
label PNR='Kunde' Sales_PNR='Umsatz pro Kunde';format
Sales_PNR commax9.2;
run;
6
Datensicht mit PLZ-Graphik
Für Input- und Output-Tabellen bietet der CRM-Explorer statt dem
SAS/BASE-viewtable und dem antiken SAS/FSP-fsview einen AF-interner
TableView mit Zeilen-Drill-Down-Funktionalität und PLZ-Graphik-Feature
data _null_;
file_in=" http://routenplaner24.telemap.de
/<image>.jpg";file_out=“c:\<image>.jpg";
infile in URL filevar=file_in lrecl=1 recfm=S nbyte=read
end=EOF_URL
debug proxy=“<your-proxy-server" user=“<your-id>"
pass=“<your-password>";
file out filevar=file_out lrecl=1 recfm=f;
do while (not EOF_URL); input buffer $CHAR1. @@; if
_error_ then leave;
put buffer $CHAR1. @@; end;stop;run;
Datums-/Zeit- und benutzerdefinierte Formate werden im CRM-Explorer mit
PROC FORMAT für die Weiterverarbeitung (z.B. Anzeige Wertelisten) in
eine Ausgabedatei geschrieben.
Datums-/Zeitformate:
proc contents noprint data=PARENT out=mytable(
keep=Name Format);
run;
data Date; set mytable(where=
(Format in ('DDMMYY' 'MMDDYY' 'DATE' 'YYMM') or
substr(Format,4,4)='DFDD'));
316
Programmierung
run;
* analog Time ...;
Benutzerdefinierte Formate:
* VALUE DESCRIPTIONS
BY
PROC FORMAT;
proc format lib=WORK.FORMATS cntlout=mytable;
select REGION;
run;
Tabelle 1: Interaktive Metadaten des CRM Explorers
Metadaten
=>SAS-Code
=>Projektablage
Tabellen/Felder
Bedingungen
Sortierungen
Mengenlehre (Join
Types)
distinct/non-distinctEntscheidung
Interaktive Messung
Programmdurchlaufdauer
Remote-Work-LibraryCheck:
%sysfunc(
libref(RWORK))=0
7
Parallel zur CodeErstellung erfolgt
ein Syntax-Check
(Anzahl Klammern
und Anführungszeichen) und ein
VerknüpfbarkeitsTest. Bei Auslassen
von Keyvariablen
aus zwischenliegenden Hierarchiestufen erfolgt
eine Fehlermeldung.
Die zur SASCode-Erstellung
dienenden Metadaten lassen sich
als ‘Projektdaten‘
ablegen und zur
Befüllung von
SAS/AF-Objekten
wiederverwenden.
Interaktive Metadaten
Aus den Anwenderanforderungen wird ein SAS-SQL-Code in einem
Anwender-eigenen SAS-Catalog abgelegt. Als SAS/AF-Anwendung mit
integrierter Batchverarbeitung sind im CRM-Explorer zwei Prozesse zu
kontrollieren:
1. SAS/AF-Prozesse: Für Updates von AF-Frames aus der AFEntwicklungs- in die AF-Produktiv-Umgebung werden AnwenderLogins/Logouts in einer Registrierungs-Tabelle mitprotokolliert
2. Batch-Prozesse: Sollte der Batchlauf ein Zeitlimit (z.B. 2 Min.)
überschreiten, erscheint ein akustisches Signal bzw. eine
317
T. Rüdiger
zusammengesetzte Melodie
data _null_;
call sound(<Tonhöhe>,(1/<Dauer>)*300);
run;
8
Mehrdimensionale deskriptive Analysen
Mehrdimensionale deskriptive Analysen nutzen die CLASS-Komponente
der SAS-Prozedur PROC MEANS
proc means noprint | proc summary data=<Datei>;
class <Variablen>;
var <Variablen>;
output out=<Datei>
n= mean= sum= std= min= median= max= nmiss=;
run;
Der Analyse-Frame ist die vorbereitende Schaltzentrale für Excel-/ RTF/HTML-Reports, graphischen und geographischen Output oder dient zur
Weiterverarbeitung von Zwischenergebnissen bei vorhandener Key-Variable.
9
Graphische Auswertungen
Der CRM-Explorer nutzt die graphischen Möglichkeiten aus SAS/AF (Bar-,
Box-, Line-, Area-, Pie-Charts, Join- Scatter- Surface-Plots)
Die Output-Graphiken lassen sich als gif-Datei sich in Reports einbetten.
Geoanalysen (GIS) erfolgen mithilfe PLZ-Kreisgemeinde-SchlüsselungAFMaps lassen sich ebenfalls über die Snapshot-Methode als gif-Datei
exportieren.
10
Zusammenfassung
Der CRM-Explorer verknüpft die Stärken des SAS-Systems mit den SASDictionary Tables und benötigt nur wenige SAS-Module.Als SAS/AFApplikation orientiert sich der CRM-Explorer flexibel an individuellen
Anwender-Bedürfnissen. Anwender finden sich auch ohne Training schnell
zurecht, positiver Nebeneffekt: SAS-Spezialisten haben mehr ‘MiningTime‘.
318
Herunterladen