Join Now

Gem informationer om dine data sammen med dine data - Extended Attributes med PROC DATASETS

by SAS Employee GeorgMorsing on ‎08-17-2016 04:29 AM (172 Views)

Hej,

 

En af jer har efterspurgt en opskrift til at arbejde med "Extended Attributes" i PROC DATASETS. Det var et oplæg vi holdt den 21. maj 2015 på vores Klog på SAS-programmering netværksmøde.

 

Kort fortalt går dette ud på at udvide de "metadata", som beskriver/definerer en tabel eller udvalgte kolonner i en tabel. Disse oplysninger gemmes i tabellen. Information om data gemmes herved sammen med data og det er informationer du kan definere.  

 

Her er koden vi gennemgik den dag. God fornøjelse.

 

Georg 

 

libname klog 'c:\klog';

data klog.heart;

set sashelp.heart;

bmi = round(weight/(height**2)*703);

keep bmi Weight Height Sex AgeAtStart;

rename AgeAtStart = age;

run;

* --- Tilføj en ny dataset attribut ---;

proc datasets lib=klog nolist;

modify heart;

xattr add ds creator = 'Georg';

run;

* --- Tilføj attributter til 3 forskellige variable ---;

proc datasets lib=klog nolist;

modify heart;

xattr add var age ( formula = 'round(weight/(height**2)*703)' );

xattr add var weight ( unit = 'POUND' );

xattr add var height ( unit = 'INCHES' );

run;

proc contents data=klog.heart;

run;

* --- Dette view undersøger alle tabeller for extended attributter ---;

proc print data=sashelp.vxattr;

run;

* --- Når Proc Contents kører dannes 2 nye tabeller med information om

extended attributter ---;

ods output extendedattributesds =klog.dsattr

extendedattributesvar=klog.varattr;

proc contents data=klog.heart;

run;

* --- Slet alle extended attributter på en tabel ---;

proc datasets lib=klog nolist;

modify heart;

xattr delete;

run;

proc datasets lib=klog nolist;

modify heart;

xattr update ds creator='Georg';

run;

* --- Fjern attributter enkeltvis ---;

proc datasets lib=klog nolist;

modify heart;

xattr remove ds creator;

xattr remove var age ( formula );

xattr remove var weight ( unit );

xattr remove var height ( unit );

run;

* --- Automatisér dannelsen af attributter med macro kode ---;

* --- Dette er bare starten på kode til dette, det kan gøres

meget mere automatisk ---;

proc copy in=sashelp out=klog memtype=data;

select prd:;

run;

%macro creator(table,user);

proc datasets lib=klog nolist;

modify &table;

xattr add ds creator = "&user";

run;

%mend;

%creator(prdsale,Georg)

%creator(prdsal2,Barbara)

%creator(prdsal3,Georg)

proc print data=sashelp.vxattr;

where xattr = 'creator' and xvalue = 'Georg';

run;