8 Commits

Author SHA1 Message Date
92f2f4f6d2 feat: datacatalog
All checks were successful
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m48s
2025-06-11 23:34:34 +01:00
5ec342cbc4 fix: typo
All checks were successful
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m52s
2025-06-05 13:55:06 +01:00
f090dc18ba fix: improvements2
All checks were successful
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m52s
2025-06-04 14:53:03 +01:00
7c2cc2628b fix: numbering and additional details
All checks were successful
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m50s
2025-06-04 14:40:44 +01:00
c6ef23d54b feat: updated viya deploy instructions
All checks were successful
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m53s
2025-06-04 13:56:22 +01:00
5715d17312 Merge pull request 'fix: servername' (#1) from servername into main
All checks were successful
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 2m21s
Reviewed-on: #1
2025-03-11 20:47:22 +00:00
a
51b4abf66e fix: note about milliseconds 2025-03-11 20:41:24 +00:00
a
907a5d6be6 fix: servername 2025-03-10 15:59:05 +00:00
5 changed files with 76 additions and 81 deletions

View File

@ -2,7 +2,8 @@
## Overview
Dates & datetimes are actually stored as plain numerics in regular SAS tables. In order for the Data Controller to recognise these values as dates / datetimes a format must be applied.
Dates & datetimes are stored as plain numerics in regular SAS tables. In order for the Data Controller to recognise these values as dates / datetimes a format must be applied.
![displayed](img/dcc-dates1.png) ![source](img/dcc-dates2.png)
@ -14,10 +15,12 @@ Supported date formats:
* YYMMDD.
* E8601DA.
* B8601DA.
* NLDATE.
Supported datetime formats:
* DATETIME.
* NLDATM.
Supported time formats:
@ -34,6 +37,9 @@ proc metalib;
run;
```
!!! note
Data Controller does not support decimals when EDITING. For datetimes, this means that values must be rounded to 1 second (milliseconds are not supported).
If you have other dates / datetimes / times you would like us to support, do [get in touch](https://datacontroller.io/contact)!

View File

@ -22,15 +22,12 @@ The Stored Processes are deployed using a SAS Program. This should be executed
```sas
%let appLoc=/Shared Data/apps/DataController; /* CHANGE THIS!! */
%let serverName=SASApp;
filename dc url "https://git.datacontroller.io/dc/dc/releases/download/latest/sas9.sas";
%inc dc;
```
If you don't have internet access from SAS, download `sas9.sas` from [here](https://git.datacontroller.io/dc/dc/releases), and change the `compiled_apploc` on line 2:
![](img/sas9_apploc.png)
You can also change the `serverName` here, which is necessary if you are using any other logical server than `SASApp`.
If you don't have internet access from SAS, download `sas9.sas` from [here](https://git.datacontroller.io/dc/dc/releases), and change the initial `compiled_apploc` and `compiled_serverName` macro variable assignments as necessary.
#### 2 - Deploy the Frontend

View File

@ -1,5 +1,5 @@
# Data Controller for SAS: Data Catalog
Data Controller collects information about the size and shape of the tables and columns. The Catalog does not contain information about the data content (values).
Data Controller collects information about the size and shape of libraries, tables, columns catalogs, and objects. The Catalog does not contain information about the data content (values).
The catalog is based primarily on the existing SAS dictionary tables, augmented with attributes such as primary key fields, filesize / libsize, and number of observations (eg for database tables).
@ -20,13 +20,17 @@ Table attributes are split between those that change infrequently (eg PK_FIELDS)
Variable attributes come from dictionary tables with an extra PK indicator. A PK is identified by the fact the variable is within an index that is both UNIQUE and NOTNULL. Variable names are always uppercase.
### Catalogs & Objects
This info comes from the dictionary.catalogs table. The catalog created / modified time is considered to be the earliest created time / latest modified time of the underlying objects.
## Assumptions
The following assumptions are made:
* Data _Models_ (eg attributes) are not sensitive. If so the catalog tables should be disabled.
* Users can see all tables in the libraries they can access. The refresh process will close out any tables that are not found, if the user can see at least one table in a library.
* For a particular site, libraries are unique on LIBREF.
* For a particular site, libraries are unique on LIBREF.
If you have duplicate librefs, specific table security setups, or sensitive models - contact us.

View File

@ -9,7 +9,7 @@ og_image: https://docs.datacontroller.io/img/dci_deploymentdiagramviya.png
## Overview
Data Controller for SAS Viya consists of a frontend, a set of Job Execution Services, a staging area, a Compute Context, and a database library. The library can be a SAS Base engine if desired, however this can cause contention (eg table locks) if end users are able to connect to the datasets directly, eg via Enterprise Guide or Base SAS.
A database that supports concurrent access is highly recommended.
A database that supports concurrent access is recommended.
## Prerequisites
@ -37,29 +37,28 @@ The below areas of the SAS Viya platform are modified when deploying Data Contro
<img src="/img/dci_deploymentdiagramviya.svg" height="350" style="border:3px solid black" >
!!! note
The "streaming" version of Viya uses the files API for web content, so there is no need for the web server component.
## Deployment
Data Controller deployment is split between 3 deployment types:
Data Controller deployment is split between 2 deployment types:
* Demo version
* Full Version (manual deploy)
* Full Version (automated deploy)
* Streaming (web content served from SAS Drive)
* Full (web content served from dedicated web server)
<!--
## Full Version - Manual Deploy
-->
There are several parts to this proces:
1. Create the Compute Context
2. Deploy Frontend
4. Prepare the database and update settings (optional)
5. Update the Compute Context autoexec
2. Deploy Frontend (Full deploy only)
3. Deploy Services
4. First Run Configuration
5. Prepare the database and update settings (optional)
6. Update the Compute Context autoexec
### Create Compute Context
The Viya Compute context is used to spawn the Job Execution Services - such that those services may run under the specified system account, with a particular autoexec.
### 1. Create Shared Compute Context
We strongly recommend a dedicated compute context for running Data Controller. The setup requires an Administrator account.
@ -74,21 +73,60 @@ We strongly recommend a dedicated compute context for running Data Controller.
!!! note
XCMD is NOT required to use Data Controller.
### Deploy frontend
### 2. Deploy Frontend (Full Deploy only)
Unzip the frontend into your chosen directory (eg `/var/www/html/DataController`) on the SAS Web Server. Open `index.html` and update the following inside `dcAdapterSettings`:
- `appLoc` - this should point to the root folder on SAS Drive where you would like the Job Execution services to be created. This folder should initially, NOT exist (if it is found, the backend will not be deployed)
- `contextName` - here you should put the name of the compute context you created in the previous step.
- `dcPath` - the physical location on the filesystem to be used for staged data. This is only used at deployment time, it can be configured later in `$(appLoc)/services/settings.sas` or in the autoexec if used.
- `adminGroup` - the name of an existing group, which should have unrestricted access to Data Controller. This is only used at deployment time, it can be configured later in `$(appLoc)/services/settings.sas` or in the autoexec if used.
- `servertype` - should be SASVIYA
- `debug` - can stay as `false` for performance, but could be switched to `true` for debugging startup issues
- `useComputeApi` - use `true` for best performance.
![Updating index.html](img/viyadeployindexhtml.png)
Now, open https://YOURSERVER/DataController (using whichever subfolder you deployed to above) using an account that has the SAS privileges to write to the `appLoc` location.
### 3. Deploy Services
Services are deployed by running a SAS program.
#### Deploy Services: Streaming Deploy
Run the following in SAS Studio:
```sas
%let apploc=/Public/DataController; /* desired SAS Drive location */
filename dc url "https://git.datacontroller.io/dc/dc/releases/download/latest/viya.sas";
%inc dc;
```
#### Deploy Services: Full Deploy
Run the following in SAS Studio:
```sas
%let apploc=/Public/DataController; /* Per configuration in Step 2 above */
filename dc url "https://git.datacontroller.io/dc/dc/releases/download/latest/viya_noweb.sas";
%inc dc;
```
### 4. First Run Configuration
Now the services are deployed (including the service which creates the staging area) we can open the Data Controller web interface and make the necessary configurations:
#### First Run Configuration: Streaming Deploy
At the end of the SAS log from Step 3, there will be a link (`YOURSAS.SERVER/SASJobExecution?_file=/YOUR/APPLOC/services/DC.html`). Open this to perform the configuration - such as:
* dcpath - physical path for depleyment
* Admin Group - will have full access to DC
* Compute Context - should be a shared compute for a multi-user deployment
#### First Run Configuration: Full Deploy
Open https://YOURSERVER/DataController (using whichever subfolder you deployed to above) using an account that has the SAS privileges to write to the `appLoc` location.
You will be presented with a deployment screen like the one below. Be sure to check the "Recreate Database" option and then click the "Deploy" button.
@ -96,9 +134,8 @@ You will be presented with a deployment screen like the one below. Be sure to c
Your services are deployed! And the app is operational, albeit still a little sluggish, as every single request is using the APIs to fetch the content of the `$(appLoc)/services/settings.sas` file.
To improve responsiveness by another 700ms we recommend you follow the steps in [Update Compute Context Autoexec](/dci-deploysasviya/#update-compute-context-autoexec) below.
### Deploy Database
### 5. Deploy Database
If you have a lot of users, such that concurrency (locked datasets) becomes an issue, you might consider migrating the control library to a database.
The first part to this is generating the DDL (and inserts). For this, use the DDL exporter as described [here](/admin-services/#export-database). If you need a flavour of DDL that is not yet supported, [contact us](https://datacontroller.io/contact/).
@ -107,7 +144,9 @@ Step 2 is simply to run this DDL in your preferred database.
Step 3 is to update the library definition in the `$(appLoc)/services/settings.sas` file using SAS Studio.
### Update Compute Context Autoexec
### 6.Update Compute Context Autoexec
To improve responsiveness by another 700ms we recommend you follow these steps:
First, open the `$(appLoc)/services/settings.sas` file in SAS Studio, and copy the code.
@ -132,54 +171,3 @@ To explain each of these lines:
* The final libname statement can also be configured to point at a database instead of a BASE engine directory (contact us for DDL)
If you have additional libraries that you would like to use in Data Controller, they should also be defined here.
<!--
## Full Version - Automated Deploy
The automated deploy makes use of the SASjs CLI to create the dependent context and job execution services. In addition to the standard prerequisites (a registered viya system account and a prepared database) you will also need:
* a local copy of the [SASjs CLI](https://sasjs.io/sasjs-cli/#installation)
* a Client / Secret - with an administrator group in SCOPE, and an authorization_code GRANT_TYPE. The SASjs [Viya Token Generator](https://github.com/sasjs/viyatoken) may help with this.
### Prepare the Target and Token
To configure this part (one time, manual step), we need to run a single command:
```
sasjs add
```
A sequence of command line prompts will follow for defining the target. These prompts are described [here](https://sasjs.io/sasjs-cli-add/). Note that `appLoc` is the SAS Drive location in which the Data Controller jobs will be deployed.
### Prepare the Context JSON
This file describes the context that the CI/CD process will generate. Save this file, eg as `myContext.json`.
```
{
"name": "DataControllerContext",
"attributes": {
"reuseServerProcesses": true,
"runServerAs": "mycasaccount"
},
"environment": {
"autoExecLines": [
"%let DC_LIBREF=DCDBVIYA;",
"%let DC_ADMIN_GROUP={{YOUR DC ADMIN GROUP}};",
"%let DC_STAGING_AREA={{YOUR DEDICATED FILE SYSTEM DRIVE}};",
"libname &dc_libref {{YOUR DC DATABASE}};",
],
"options": []
},
"launchContext": {
"contextName": "SAS Job Execution launcher context"
},
"launchType": "service",
}
```
### Prepare Deployment Script
The deployment script will run on a build server (or local desktop) and execute as follows:
```
# Create the SAS Viya Target
sasjs context create --source myContext.json --target myTarget
```
-->

View File

@ -50,7 +50,7 @@ nav:
- Macros: macros.md
- Installation:
- System Requirements: dci-requirements.md
- SAS Viya: dci-deploysasviya.md
- SAS Viya: deploy-viya.md
- SAS 9 EBI: dci-deploysas9.md
- SAS 9 STP Hardening: dci-stpinstance.md
- Troubleshooting: dci-troubleshooting.md