Data in the cloud makes it easily accessible, and can help businesses run more smoothly. SAS Viya runs its calculations on Cloud Analytics Service (CAS). David Shannon of Amadeus Software spoke at SAS Global Forum 2018 and presented his paper, Come On, Baby, Light my SAS Viya: Programming for CAS. (In addition to being an avid SAS user and partner, David must be an avid Doors fan.) This article summarizes David's overview of how to run SAS programs in SAS Viya and how to use CAS sessions and libraries.
If you're using SAS Viya, you're going to need to know the basics of CAS to be able to perform calculations and use SAS Viya to its potential. SAS 9 programs are compatible with SAS Viya, and will run as-is through the CAS engine.
Using CAS sessions and libraries
Use a CAS statement to kick off a session, then use CAS libraries (caslibs) to store data and resources. To start the session, simply code "cas;
" Each CAS session is given its own unique identifier (UUID) that you can use to reconnect to the session.
There are a few significant codes that can help you to master CAS operations. Consider these examples, based on a CAS session that David labeled "speedyanalytics":
- What CAS sessions do I have running?
cas _all_ list;
- Get the version and license specifics from the CAS server hosting my session:
cas speedyanalytics listabout;
- I want to sign out of SAS Studio for now, so I will disconnect from my CAS session, but return to it later…
cas speedyanalytics disconnect;
- ...later in the same or different SAS Studio session, I want to reconnect to the CAS session I started earlier using the UUID I previous grabbed from the macro variable or SAS log:
cas uuid="&speedyanalytics_uuid";
- At the end of my program(s), shutdown all my CAS sessions to release resources on the server:
cas _all_ terminate;
Using CAS libraries
CAS libraries (caslib) are the method to access data that is being stored in memory, as well as the related metadata.
From the library, you can load data into CAS tables in a couple of different ways:
- Takes a sample data set, calculate a new measure and stores the output in memory
- Proc COPY can bring existing SAS data into a caslib
- Proc CASUTIL loads tables into caslibs
The Proc CASUTIL allows you to save your tables (named "classsi" data in David's examples) for future use through the SAVE statement:
proc casutil; save casdata="classsi" casout="classsi"; run;
And reload like this in a future session, using the LOAD statement:
proc casutil; load casdata="classsi" casout="classsi"; run;
When accessing your CAS libraries, remember that there are multiple levels of scope that can apply. "Session" refers to data from just the current session, whereas "Global" allows you to reach data from all CAS sessions.
Programming in CAS
Showing how to put CAS into action, David shared this diagram of a typical load/save/share flow:
Existing SAS 9 programs and CAS code can both be run in SAS Viya. The calculations and data memory occurs through CAS, the Cloud Analytics Service. Before beginning, it's important to understand a general overview of CAS, to be able to access CAS libraries and your data. For more about CAS architecture, read this paper from CAS developer Jerry Pendergrass.
The performance case for SAS Viya
To close out his paper, David outlined a small experiment he ran to demonstrate performance advantages that can be seen by using SAS Viya v3.3 over a standard, stand-alone SAS v9.4 environment. The test was basic, but performed reads, writes, and analytics on a 5GB table. The tests revealed about a 50 percent increase in performance between CAS and SAS 9 (see the paper for a detailed table of comparison metrics). SAS Viya is engineered for distributive computing (which works especially well in cloud deployments), so more extensive tests could certainly reveal even further increases in performance in many use cases.
Additional resources
- A Need For Speed: Loading Data via the Cloud, Hadley Christoffels
- Five Approaches for High-Performance Data Loading to the SAS® Cloud Analytic Services Server, Rob Collum
- How to Load Relational Data into SAS® Cloud Analytic Services Using Java, Salman Maher
- Just Enough SAS® Cloud Analytic Services: CAS Actions for SAS® Visual Analytics Report Developers, Michael Drutar
- Management and Usage of User-Defined Formats in the SAS® Cloud Analytic Services Server, Denise Poll
- Cloud Analytic Services Actions: A Holistic View, Mark Gass
7 Comments
this is great, thanks so much for sharing, the link to the videos does not appear to be working though
Thank you for letting us know the link is not working. We're looking into it.
Hi Wendy,
Any joy on getting the video referenced in this article being made available ?
Downunder Dave
Hi Dave,
Sorry for the delay in getting the link fixed. The video referenced no longer exists. I was able to find a different CASL tutorial from SGF 2020. I've updated the title and link in the post.
Hi Lexi. I enjoyed reading this information on SAS Viya. I'm still learning a lot about the new SAS Cloud computing environment. Again, I appreciate your info. Thank you!
Pretty useful info. Thank You.
Nice blog! Thanks for sharing it.