Scénario de test & Cas d'usage
Erstellung von Log-Daten, einschließlich Sonderzeichen und leerer Einträge.
| 1 | |
| 2 | DATA casuser.server_logs; |
| 3 | LENGTH log_entry $200; |
| 4 | INFILE DATALINES delimiter='#'; |
| 5 | INPUT id log_entry$; |
| 6 | DATALINES; |
| 7 | 101#ERROR: Connection refused at 192.168.1.1# 102#INFO: Update successful.# 103#WARN: Low memory on /dev/sda1#; |
| 8 | |
| 9 | RUN; |
| 10 |
| 1 | |
| 2 | PROC CAS; |
| 3 | conditionalRandomFields.crfScore TABLE={name='server_logs', caslib='casuser'} model={ label={name='sec_labels'}, attr={name='sec_attrs'}, feature={name='sec_features'}, attrfeature={name='sec_attr_features'}, template={name='sec_templates'} } casOut={name='logs_analyzed', caslib='casuser', replace=true} target='incident_type'; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
| 1 | |
| 2 | PROC CAS; |
| 3 | TABLE.fetch TABLE={name='logs_analyzed', caslib='casuser'} fetchVars={'log_entry', 'incident_type'}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
Die Aktion akzeptiert die explizite Definition der Untertabellen (label, attr, feature etc.) im 'model'-Parameter. Die Ausgabetabelle 'logs_analyzed' enthält die klassifizierten Log-Einträge in der Spalte 'incident_type', wobei kritische Fehler (ERROR) korrekt identifiziert werden.