A Human Generated Introduction to Generative AI, Part 1: Synthetic Data Generation
Recent Library Articles
Recently in the SAS Community Library: In the first of two posts on applications of generative AI, SAS' @JThompson reveals the role of generating synthetic data.
Hi all, So since its the holidays I've been slacking on learning SAS...so I come back today to review and find that the learn.sas.com page with the essentials now doesn't load the training properly: This is what I see: That's it. The scrolling still works, but clearly I can't read it as the frames on this page now seem incredibly small, unlike before. I've cleared my internet history but this did not solve the problem. Any suggestions? Thanks, Ryan
... View more
Hi, I've been scratching my head for the past few hours and thought an expert can help me. I have a list of names that belong to the same common entity. I want to create unique 2 letter short codes using the names. I've written a program that should work (see result on row 2, where Harriet would create HA but because it was a duplicate of Ham, it removed A from the name to derive HR instead) but does not work for the subsequent record. Harry should have had A and R removed to derive HY short_code nam_1 iso_a2 tmp_cd last_tmp_cd nam_1_s in_prev do_cnt to_rm HA Ham AL HA HAM 0 1 HR Harriet AL HA,HR HA HRRIET 0 2 A HA Harry AL HA,HR,HA HA,HR HARRY 0 1 HE Hello AL HA,HR,HA,HE HA,HR,HA HELLO 0 1 HI Hitachi AL HA,HR,HA,HE,HI HA,HR,HA,HE HITACHI 0 1 HO Hog AL HA,HR,HA,HE,HI,HO HA,HR,HA,HE,HI HOG 0 1 HG Hogwarth AL HA,HR,HA,HE,HI,HO,HG HA,HR,HA,HE,HI,HO HGWARTH 0 2 O HO Holler AL HA,HR,HA,HE,HI,HO,HG,HO HA,HR,HA,HE,HI,HO,HG HOLLER 0 1 HU Hummer AL HA,HR,HA,HE,HI,HO,HG,HO,HU HA,HR,HA,HE,HI,HO,HG,HO HUMMER 0 1 Here is a full working example that produced the results above. Apologies in advance as I had to put a lot of comments to make sure my head is working correctly! I also added a few failsafes and bits and bobs to troubleshoot. /*list of names*/ data tmp; length nam_1 $50; input nam_1; datalines; Harry Hummer Harriet Hog Ham Hello Hogwarth Hitachi Holler ; run; /*add a common field*/ data tmp; length short_code $5; set tmp; iso_a2="AL"; run; /*objective: for the same common field (e.g. AL) short_code should be unique. short_code is derived from nam_1 (2 char)*/ /*short_code is all empty*/ proc sort data=tmp; by iso_a2 descending short_code nam_1; run; data out; set tmp; by iso_a2 descending short_code nam_1; length tmp_cd last_tmp_cd $500; retain tmp_cd; /*i want to retain a list of short_codes that has been assigned for the same common field so i should not assign it again*/ if first.iso_a2 then do; /*for every unique common fieldm, reset my short_code list*/ tmp_cd=short_code; end; /*begin creating short_code*/ last_tmp_cd=tmp_cd; /*assign short_code from previous row to a new field to debug*/ nam_1_s=upcase(nam_1); /*assign name to temporary var to be manipulated if required*/ if short_code="" then do; /*assign short_code*/ in_prev=1; /*do at least once*/ do_cnt=0; /*failsafe for infinite loop*/ do until (in_prev=0 or do_cnt=6); do_cnt=do_cnt+1; /*failsafe for infinite loop*/ if do_cnt=1 then short_code=upcase(substr(nam_1_s,1,2)); /*if first loop, then simple assignment. take first 2 char of nam_1_s as short code. this will introduce dups*/ else do; /*if not first loop it means there was a duplicate. now attempt to remove the char from nam_1_s*/ to_rm=substr(strip(reverse(short_code)),1,1); /*extract the 2nd char of short_code and use this to remove this char from nam_1_s*/ nam_1_s=cats(substr(nam_1_s,1,1),compress(substr(nam_1_s,2), to_rm, 'i')); /*keep first char and attempt to remove the next char*/ short_code=upcase(substr(nam_1_s,1,2)); put last_tmp_cd=; put short_code=; put nam_1_s=; end; /*as in you see in the logs, it works for the first duplicate short_code. but subsequent short_codes fail to get index value>0 even though th short_code value is in last_tmp_cd*/ in_prev=index(last_tmp_cd, short_code); end; end; tmp_cd=catx(",",tmp_cd,short_code); /*add assigned short_code to the list so next short_code will not use the same value*/ run;
... View more
When you meet Daniele Goretti, you quickly notice two things: a quiet confidence and an unmistakable sparkle when the topic turns to data.
“I love the possibility to derive insights from data,” he says. “It allows you to understand how things behave—sometimes exactly as you expect, sometimes in surprising ways. Both are rewarding.”
Daniele is a Technical Training Consultant at SAS, working with learners across Europe, the Middle East, and Africa. Since joining SAS in 2018 after a Master’s in Physics (specializing in fundamental interactions), he has taught programming, data analysis, and administration courses—both in Italian and English.
A physicist who fell in love with code
Daniele’s journey into analytics didn’t begin with a love for programming. At university, his passion was data analysis—understanding patterns, making predictions, and testing them against reality. But once he joined SAS, he realised that preparing data was where most of the hard work happened.
“Programming wasn’t my focus at university,” he admits. “But as I learned more, I discovered I really liked coding. I enjoy building a process, checking if it works, and then seeing if my assumptions hold true.”
Problem-solving is a team sport
Daniele’s work is rarely a solo mission. He thrives on collaboration—whether with other trainers, technical support, or consultants. He recalls friendly competitions with colleagues to solve case studies, often taking different paths to the same outcome.
“That’s the beauty of it,” he says. “We each bring different approaches, and when we put them together, we get a richer picture.”
For customers, that means he’s not only sharing what works, but also why it works and what alternatives exist. And if a problem can’t be solved on the spot? Daniele makes sure it finds the right path to a solution.
Teaching as two-way learning
If you think training is a one-way street, Daniele will change your mind. He’s just as excited to learn from his students as they are from him.
“When I start a course, I want to know why people are there,” he explains. “Some just want to explore the software; others have a specific challenge to solve. Both make the session richer.”
This constant exchange shapes his teaching style, which has evolved from simply sharing product knowledge to blending it with real-world project experience. It also means no two courses are exactly alike.
A broad toolbox for learning
Ask him about the future of education, and Daniele lights up. He sees value in every format—face-to-face, live web training, videos, microlearning—and believes the right approach depends on the learner’s goals.
His personal favourites? Face-to-face sessions for smaller groups and live web training for larger audiences. “Live web training gives shy learners a safe space to engage,” he says. “But face-to-face lets you address individual needs more directly.”
He also sees AI playing a growing role—especially in keeping learning materials up-to-date across multiple languages. As SAS continues to expand course localization, he’s excited about AI’s potential to speed up translation and content adaptation.
Reliability as a trademark
When asked what sets him apart, Daniele answers without hesitation: reliability and authenticity. He wants learners to feel they can reach out long after the course ends.
“I’m always there to help,” he says. “And if I can’t solve the problem myself, I’ll point you in the right direction.”
Outside of work? He enjoys playing five-a-side football—though he laughs, “I’m not a very good player, but I always enjoy it.”
His advice for SAS learners
Daniele’s golden rule is simple: never stop practicing, and don’t forget to have fun.
“There are so many ways to learn—videos, courses, community discussions,” he says. “If you get stuck, the SAS Communities are full of people ready to help. Just keep going.”
Ready to take your SAS skills to the next level? Explore our SAS training programs—from programming and analytics to the Analytics Leadership Program. Learn with experts like Daniele, and turn your curiosity into results.
Learning Legends – Real People. Real Stories. Real Learning.
... View more
One of the perennial issues in analytics and data science is leadership. There is now general agreement that data and analytics are essential for business success. However, using data and analytics—becoming data-driven—does not happen without analytics leadership. This may come from the top, driven by executives and senior managers. However, it is also important for any manager.
There are many questions about developing analytics leadership, including what areas need to be addressed, and the roles of various players, including universities, businesses, and partners.
The importance of words—and research
Jack Phillips is CEO and co-founder of the International Institute for Analytics (IIA). The IIA provides access to a network of analytics practitioners, experts and academics to help companies to become data-driven. Much of the IIA’s work focuses on analytics leadership, which is also a strong focus for SAS, including through its analytics value training. He draws an interesting distinction in the words used to describe analytics leadership.
“We increasingly see a difference between analytical leadership and ‘leaders of analytics’. The first term applies to non-analytics professionals, while the second applies to the emerging class of (often c-level) leaders of the data, analytics and AI function.”
He also notes a distinction between analytics and other functions in organizations in terms of the volume of research. There is very little information about what skills and behaviors are needed for and by emerging leaders of analytics. Jack sees this as a real problem.
“We know that artificial intelligence, and data and analytics more generally are the future. Understanding what type of leader is needed is also crucial.”
Cutting through the hype
The emphasis for future analytics leaders is very much on how analytics is consumed and deployed to generate business value. At the moment, much of the hype is focused on artificial intelligence (AI), and particularly generative AI like ChatGPT. There is also a lot of enthusiasm for machine learning. However, it is important to be able to ‘walk before you try to run’. The challenge for analytics teams is to ride the wave of enthusiasm in the business, while ensuring that any investment generates value. Jack agrees that this is important.
“There’s nothing like having something that has a whole lot of sizzles and gets the attention of every major journalist and media outlet in the world. That’s what has happened over the past eleven or twelve months with generative AI. The teams we work with are using this opportunity to drive attention toward data quality and traditional analytics as much as this new shiny object.”
Jack comments that the applications for generative AI are interesting, but also limited to certain jobs and activities. He suggests that it is important for analytics leaders to make clear that generative AI may seem new, but it is only an extension of what has been happening for decades. It therefore sits very firmly within analytics—and should not replace basic functions.
“I think you have to recognize that the opportunity for generative AI is very limited compared to the potential of broad data and analytics in most organizations. Basic business intelligence and reporting can take many enterprises a very long way.”
Investing in analytics leadership
The next question is what qualities are needed from analytics leaders—and who should take responsibility for developing them? Jack’s views are simple.
“Our research has shown that analytics leaders need an enterprise mindset, evangelist mindset, change agent mindset, people mindset, growth mindset, and technical mindset.”
Paul Hansen, from the Norwegian Business School, states that business knowledge is key for working with analytics. Riaan de Jongh, who has previously joined us to talk about the data science skills gap, suggests that analytics students should be required to do projects in industry to develop that knowledge. Jack agrees that the responsibility for developing crucial skills must be shared between education and industry.
“Higher education plays a crucial role in training future leaders. Einstein said that information is not knowledge, and the only source of knowledge is experience. We should see the split in responsibilities as universities provide the information, but enterprises have to provide the experience over time to develop new leaders.”
There is very little doubt that the highest performing enterprises when it comes to analytics are heavily investing in talent development, particularly through partnerships with local universities. Enterprises that are not doing this are falling behind. Development of data science skills—and especially analytics leadership skills—must be a shared responsibility.
... View more
Hello
I want to check if string contain substring.
I do it with Find function.
What is the reason that example 1 is working 100% but example 2 is not working well?
30000 exist in 40000,80000,30000
data example1_find;
string = "40000,80000,30000";
substring=30000;
char_substring=compress(put(substring,best.));
pos1 = find(string,char_substring);
IF POS1>0 then ind=1;else ind=0;
run;
data example2_find;
string = "I Love- Banana";
substring='Banana';
pos1 = find(string,substring);
IF POS1>0 then ind=1;else ind=0;
run;
... View more
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss. Register now and lock in 2025 pricing—just $495!