SAS Studio is a very common interface to use to work with SAS® Cloud Analytic Services (CAS) data. The Libraries tree in SAS Studio displays SAS libraries (librefs) that contain your SAS data sets. To view CAS data in the Libraries tree, you need to associate a libref with the CAS library (or caslib) that contains your CAS tables.
This article discusses how you can define librefs to be associated with caslibs. The terms “libref” and “caslib” might be new to you, so here is a quick explanation of these terms.
- A SAS library reference, or libref, is a shortcut name that points to a storage location on the server where your SAS files are stored.
- A CAS library name, or caslib, is a shortcut name that references an in-memory space that holds your CAS tables.
The LIBNAME statement enables you to create these types of shortcut names.
What you see in the Libraries tree
The Libraries tree in SAS Studio displays the defined librefs where you can select and view your data sets. In the following image, the Libraries tree displays the default libraries:
Any user-defined libraries would appear in this list as well. Note: No caslibs are displayed in this list.
To view caslibs in the Libraries tree, you need to associate a libref with each caslib.
Use the CASLIB _ALL_ ASSIGN; statement to associate all caslibs
After you establish a CAS session (by using the CAS statement), you can associate a libref with each of the defined caslibs by running the following statement:
caslib _all_ assign; |
After you submit this code, you can see in the log that a libref was created for each caslib, and the name of the caslib is used as the name of the libref.
After you define a libref for each caslib, the Libraries tree is then updated to include these new librefs, as shown in the following image. The librefs that are associated with caslibs are identified by a cloud and snowflake icon that is next to the caslib name:
You can also use the following SAS Studio snippet to create a libref for each caslib:
SAS Snippets ► SAS Viya Cloud Analytic Services ► Generate SAS librefs for caslibs
Use the LIBNAME statement and CAS engine to associate specific caslibs
The CASLIB _ALL_ ASSIGN; statement defines a libref for each of your caslibs. However, if you do not want to include all caslibs in the Libraries tree, you can define librefs for only the caslibs that you want to include.
To do that, use the LIBNAME statement with the CAS engine to define a libref that is associated with a specific caslib. The following statement shows the syntax to define the libref:
libname libref cas caslib=caslib; |
Here, libref is the name that you choose for the SAS libref, and caslib is the name of the assigned caslib that you want to associate with the libref.
When you use the CASLIB _ALL_ ASSIGN; statement, the caslib name is used for the libref name. But the libref name does not have to be the same as the caslib name.
For example, the following statement creates a libref named MYCAS that is associated with the CASUSER caslib:
libname MYCAS cas caslib=CASUSER; |
Ensure that the caslib is already defined before you associate it with a libref.
If you are not sure whether a caslib is defined, the following code generates a list of the available defined caslibs. The list is generated on the Results tab in SAS Studio:
proc cas; table.caslibInfo; quit; |
Note that you can also use the CASLIB _ALL_ LIST; statement to view the list of caslibs in the SAS Studio log.
Whether you use the table.caslibInfo action or the CASLIB _ALL_ LIST; statement is a matter of preference for where you want to view the results.
Additional options are supported for the LIBNAME statement and can be found in the CAS LIBNAME engine documentation.
Troubleshooting
Some librefs are not shown
What if you followed the above instructions and see some, but not all, of the librefs for your caslibs in the Libraries tree?
The rules for caslib names are not the same as the rules for librefs, so not all caslib names can be used as libref names.
For example, when you use the CASLIB _ALL_ ASSIGN; statement, you might see a note like the following written to the log:
NOTE: CASLIB SystemData for session CASAUTO will not be mapped to SAS Library SystemData. The CASLIB name is not valid for use as a libref.
This note is produced because the LIBNAME statement attempted to define a libref named SystemData to be associated with the caslib SystemData. However, a libref name is limited to eight characters, so SystemData could not be used as a libref name.
The name that is used for a SAS libref must conform to the rules for a SAS name.
If a caslib name is longer than eight characters, you can use the LIBNAME statement with the CAS engine to associate your caslib with a libref that meets the requirements for a SAS name.
For example, to define a libref for the SystemData caslib, you can use a shorter libref name, such as SYSDATA:
libname sysdata cas caslib=SystemData; |
In the following image, the Libraries tree now includes the SYSDATA libref, which enables you to view the CAS tables that are stored in the SystemData caslib.
Another issue that you might encounter is that the name of the caslib is defined as a SAS name literal, such as containing character spaces in the caslib name, and you cannot associate a libref with that caslib. The CAS LIBNAME engine does not support a SAS name literal for a caslib name.
When you want to specify a name for a caslib, keep these SAS name rules in mind.
CAS tables are not shown
What if you defined librefs for each of the caslibs that you want to view in the Libraries tree, but some CAS tables are not displayed for a caslib?
If the name of a CAS table does not comply with the VALIDMEMNAME rules, then the table is not displayed in SAS Studio. SAS Note 63538 provides more information about this issue.
Librefs are not assigned automatically
What if you want to be able to see your caslibs in the Libraries tree in SAS Studio every time that you sign in? For this preference, you can edit your autoexec file in SAS Studio and include the statements to automatically define the librefs for your caslibs.
Follow these steps:
- Select Options ► Autoexec file.
- In the file, enter each of the statements that you want to run every time that you sign in. Here are examples:
cas;
caslib _all_ assign; |
You can also include the LIBNAME statements for your caslibs as well as any other SAS statements that you want to run each time you sign in to SAS Studio.
- Click Run to submit the statements.
- Open the Log tab to verify that your statements ran without error.
- Click Save.
With each subsequent sign-in for SAS Studio, the statements from your autoexec file are run automatically, and you then can view the librefs for your CAS tables in the Libraries tree.
Conclusion
CAS libraries enable you to access your CAS data. By defining the librefs for those caslibs in SAS Studio, you can have more interactive access to the CAS data.
Learn more
- Caslibs and librefs in SAS Viya
- What is a CAS-enabled procedure?
- Viya administrators can now get personal with users' Caslibs
2 Comments
HI Marcia, Thanks for the above document,
I need a small help.
proc cas;
table.caslibInfo;
quit;
From the above code, I get the list of CAS libraries in the Results page, but I need this to be loaded into a table. Can you please help?
Hi Ashok,
You can use the RESULT= option on the table.caslibInfo statement to send the results of the action to a variable. You can then use the SAVERESULT statement in PROC CAS to save the result table in that variable to a cas table.
For example:
proc cas;
table.caslibinfo result=r;
saveresult r caslib="casuser" casout="list";
quit;
The CASUSER.LIST table will contain the information from the caslibInfo action.
Regards,
Marcia