Ich versuche automatisch einige Integritätsbedingungen auf diesem Datensatz basierten zu erstellen:SAS: Automatisieren Integritätsbedingungen Schaffung
ds_name | var_name | ic_clause | ic_msg
--------+----------+------------------------------------+-----------------------
tableA | var1 | primary key($var$) | $var$ is a primary key
tableB | var2 | check(where=($var$ in ('a', 'b'))) | invalid $var$ value
Die Idee ist, ein generisches Programm zu erstellen, die durch diese Datensatz Schleife und erstellt die ICs entsprechend. In diesem speziellen Fall ist das äquivalent hart codierte Programm wäre:
proc datasets nolist;
modify tableA;
ic create primary key(var1)
message = "var1 is a primary key";
quit;
proc datasets nolist;
modify tableB;
ic create check(where=(var2 in ('a', 'b')))
message = "invalid var2 value";
quit;
Dies sind die Schritte, die ich im Programm vorstellen, aber ich brauche Hilfe, um sie in der eigentlichen Code zu übersetzen:
- Fetch Werte für eine Zeile und setzen sie sie in Makrovariablen
- ersetzen $ var $ Substrings mit den tatsächlichen Variablennamen in Spalte var_name
Führen Sie einen generischen proc Datensätze, zB .:
proc datasets nolist; modify &my_ds; ic create &my_clause message = &my_msg; quit;
- Schleife durch alle Reihen
Kann jemand mir bitte mit diesem Code helfen? Ich weiß nicht, ob die von mir vorgeschlagenen Schritte der beste Weg sind, um das zu implementieren, was ich versuche. Im Grunde versuche ich eine relationale Datenbank innerhalb von SAS zu simulieren und Dinge maximal zu automatisieren.
Vielen Dank!
http://www2.sas.com/proceedings/sugi25/25/cc/25p077.pdf – user667489
@ user667489 Dank für den Artikel! Datengesteuerte Programmierung ist wirklich ein interessantes Konzept. –