Files
docs.datacontroller.io/docs/cas-tables.md
T
dc-bot 63dea99371 docs: document v7.13.0 features
- Live formulas (HARDFORMULA/SOFTFORMULA) with HyperFormula in dcc-validations
- Formula Rules section with column-name syntax, DC.* literals, editor behaviour
- MPE_VALIDATIONS table doc: add HARDFORMULA/SOFTFORMULA to RULE_TYPE values
- Roadmap: mark Frontend Formulae and Regex Rules as delivered
- SAS VA Embed: document Live vs Confirm filter modes and pending-changes UX
- ViewBoxes: document edge/corner drag resizing
- Licensing: combined-key paste, live key preview, protocol mismatch guard
- CAS Tables: REPLACE load type support and temp table cleanup
- Editor: native date/time pickers, paste-validation overlay, row status indicators
- Stage page: Formatted/Unformatted toggle on the approvals screen
- Viya deploy: configurator overhaul, deploy checks, login page UX
- Index page: add live formulas and VA embed to features list
2026-09-03 17:15:35 +00:00

71 lines
3.0 KiB
Markdown

---
layout: article
title: CAS Tables
description: Dealing with CAS (in-memory) Tables in Data Controller
og_image: /img/SAS-Viya-and-CAS-300x249.png
---
!!! warning
Work in Progress!
# CAS Tables
CAS Tables require special consideration in Data Controller with regards to the following topics:
- System Account
- Loading
- Unloading
- Special Variables
## System Account
Despite having a shared SYSUSERID, the SPRE session will (by default) authenticate using the logged-in user credentials. To get around this, it is necessary to set up the CAS connection in the autoexec - ie, before the user takes over the session. The code snippet will be:
```sas
%let _CASHOST_ = <your-host>;
%let _CASPORT_ = 5570;
cas dcsession authdomain="<your-domain>" sessopts=(caslib=casuser);
```
The credentials need to be first placed in the viya credentials service as described [here](https://go.documentation.sas.com/doc/en/pgmsascdc/v_073/casref/n0z3r80fjqpobvn1lvegno9gefni.htm#p11ynzjbz96oq1n17rgt2utv6swj).
Another approach can be to use the `AUTHINFO="authentication-file" option, as described [here](https://go.documentation.sas.com/doc/en/pgmsascdc/v_073/casref/n0z3r80fjqpobvn1lvegno9gefni.htm#n174yddgn85756n1v5q4yb881xa0).
Note that since the CAS connection is using a shared account, the CASUSER library is never shown in the DC interface.
## Loading
It can happen that a CAS table is configured in Data Controller but not loaded into memory. In this case, when a user selects the table, it will be automatically loaded.
### REPLACE Load Type
The REPLACE load type is fully supported on CAS tables. When a REPLACE load is applied to a CAS target, Data Controller:
1. Casts any fixed-length character variables in the staging table to varchar (matching the target table structure), since fixed char variables cannot be appended to CAS varchar columns.
2. Truncates the target CAS table in-place using `proc cas; table.deleteRows` (CAS tables do not support SQL deletes).
3. Appends the staged data via a data step with `sessref=dcsession`.
The truncate is deliberately the last step before the append, to minimise the time in which the target table is empty. See [MPE_TABLES](/dcc-tables/#loadtype) for general REPLACE documentation.
## Unloading
After an approval, the in-memory version of the CAS Table will be updated. To apply this to the underlying file on disk, the following code must be executed (eg in a POST APPROVE HOOK):
```sas
proc casutil;
save casdata="mytable" incaslib="mycaslib"
casout="mytable" outcaslib="mycaslib"
replace;
quit;
```
## Special Variables
Processing of data in Data Controller is performed in SPRE with SAS datasets - and as such, it is not possible to process character variables longer than 32k or other CAS specific data types.
## Temporary Table Cleanup
Temporary `casuser` tables created during loading (eg the REPLACE cast-and-append step above) are cleaned up correctly, including in error conditions. If a load is aborted before completion, any temp tables created mid-process are dropped before the lock is released.