Welcome back to my SAS Users blog series CAS Action! - a series on fundamentals. I've broken the series into logical, consumable parts. If you'd like to start by learning a little more about what CAS Actions are, please see CAS Actions and Action Sets - a brief intro. Or if you'd like to see other topics in the series, see the overview page. Otherwise, let's dig in with the table.columnInfo action.
In this post we'll l look at exploring the columnĀ attributes of a CAS table. Knowing the column names, data types, and any additional formats or labels associated with the columns makes it easier to work with the data. One way to see this type of information on a CAS table is to use the table.columnInfo CAS action!
In this example, I will use the CAS procedure to execute the columnInfo action. Be aware, instead of using the CAS procedure, I could execute the same action with Python, R and more with some slight changes to the syntax for the specific language.
Return CAS table Column Information
To view the column information of your CAS table, use the columnInfo CAS action with the table parameter. That's it! Refer to the code below.
proc cas; table.columnInfo / table={name="cars", caslib="casuser"}; quit; |
The results would appear similar to the following:
and return a variety of information about each column in the CAS table:
- the column name
- a label if one has been applied
- the Id, which indicates the position of the column in the table
- the data type of the column
- the column length
- the format, formatted length, width and decimal
Create a CSV Data Dictionary Using the ColumnInfo Action
What if instead, you want to create a data dictionary documenting the CAS table? With the columnInfo action you can export the results to a CSV file!
I'll use the columnInfo action again, but this time I'll store the results in a variable. The variable is a dictionary, so I need to reference the dictionary ci, then the columnInfo key to access the table. Next, I'll create two computed columns using the compute operator. The first column contains the name of the CAS table, and the second, the caslib of the table. I'll print the new table to confirm the results.
proc cas; table.columnInfo result=ci / table={name="cars", caslib="casuser"}; ciTbl = ci.ColumnInfo.compute({"TableName","Table Name"}, "cars") .compute({"Caslib"}, "casuser"); print ciTbl; ... |
The code produces the folloiwng result:
The new result table documents the CAS table columns, table name and caslib.
Lastly, I'll export the result table to a CSV file. First, I'll specify the folder location using the outpath variable. Then use the SAVERESULT statement to save the result table as a CSV file named carsDataDictionary.csv.
... outpath="specify a folder location"; saveresult ciTbl csv=outpath || "carsDataDictionary.csv"; quit; |
After I execute the CAS procedure I can find and open the CSV file to view the documented CAS table!
Summary
The table.columnInfo CAS action is a simple and easy way to show column information about your distributed CAS table. Using the results of the action allow you to create a data dictionary in a variety of formats.
Additional resources
table.columnInfo CAS action
CAS Action! - a series on fundamentals
SASĀ® Cloud Analytic Services: Fundamentals
CASL Result Tables
SAVERESULT Statement
Code