BookmarkSubscribeRSS Feed
abhityagi
Obsidian | Level 7

Hi Team,

 

I have a dataset test and in this dataset I have columns like acctn, cust_name, gender, address curr_date. I want to validate all the attributes of this datasets such as account number should always remain numeric and meta data should not change for all the columns. and I want to send an email to the user if the any attribute change for any column.

 

attributes ie. type of column, length, format, informat, label, all kind. 

 

DATA Test;

infile datalines;

datalines;

12345 ram    M POST OFFICE 2013 12/01/2018

43215 sham F POST OFFICE 2014  12/02/2018

45678 geeta M POST OFFICE 2015 12/03/2018

45677 **bleep**a F POST OFFICE 2016   12/04/2018

;

RUN;

3 REPLIES 3
Kurt_Bremser
Super User

A dataset does not change attributes out of the blue, there must be code that does that; fix this code, and you won't have to send any notifications. In particular, NEVER use proc import in production code.

Reeza
Super User


Ok. So what is your question for us to answer? 

 

You would keep the old data and you can access the formats/types/lengths from SASHELP.VCOLUMN or Dictionary.column and then compare them using your own routine or PROC COMPARE. Then if there's a difference, trigger the email. This is a well documented issue with lots of examples online so there should be a lot out there to get you started. 

 

Send emails:

https://documentation.sas.com/?docsetId=lestmtsglobal&docsetTarget=n0ig2krarrz6vtn1aw9zzvtez4qo.htm&...

 

PROC COMPARE:

https://documentation.sas.com/?docsetId=proc&docsetTarget=n0c1y14wyd3u7yn1dmfcpaejllsn.htm&docsetVer...

 


@abhityagi wrote:

Hi Team,

 

I have a dataset test and in this dataset I have columns like acctn, cust_name, gender, address curr_date. I want to validate all the attributes of this datasets such as account number should always remain numeric and meta data should not change for all the columns. and I want to send an email to the user if the any attribute change for any column.

 

attributes ie. type of column, length, format, informat, label, all kind. 

 

DATA Test;

infile datalines;

datalines;

12345 ram    M POST OFFICE 2013 12/01/2018

43215 sham F POST OFFICE 2014  12/02/2018

45678 geeta M POST OFFICE 2015 12/03/2018

45677 **bleep**a F POST OFFICE 2016   12/04/2018

;

RUN;


 

Jagadishkatam
Amethyst | Level 16

You could try something as below, here I chose the sashelp.class dataset and wanted to check its variable type whether it is character or numeric, if the attribute of the variable is against my expectation then I used the if then condition to send an email.

 

we need to do at the bigger scale for all the variables you want to test. but hope this code will help you somewhat.

 

%macro test;
data _null_;
set sashelp.class;
call symput('typ',vtype(name));
run;
%put &typ;
%if &typ ne C %then %do;
filename x email to='xxxx@gmail.com';
data _null_;
file x;
put 'Hi';
run;
%end;
%mend;
%test;
Thanks,
Jag

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 3 replies
  • 1153 views
  • 1 like
  • 4 in conversation