The examples interact with an external Amazon Redshift database. The Redshift table names used in the examples are placeholders and must exist in the user's Redshift environment. DATA steps are provided for the creation of internal SAS data.
1 Code Block
CASLIB
Explanation : This example creates a CAS data library (Caslib) named `redshift_lib_basic` that connects to an Amazon Redshift database. It uses the `srctype` option to specify the source type, `server`, `username`, `password`, and `database` for connection information. Replace the option values with your own Redshift connection information.
Copied!
/* Établit une connexion simple à une base de données Amazon Redshift. */
caslib redshift_lib_basic desc='Caslib Redshift Basique'
dataSource=(srctype='redshift',
server='redshift-server.example.com', /* Remplacez par votre serveur Redshift */
username='redshift_user',
password='your_redshift_password',
database='your_redshift_database');
/* Vérifier que la caslib est bien définie */
proc cas; table.caslibinfo caslib='redshift_lib_basic'; run; quit;
1
/* Établit une connexion simple à une base de données Amazon Redshift. */
Explanation : This example demonstrates how to load an existing table from Amazon Redshift (`my_redshift_table`) to the CAS server using `PROC CASUTIL`. It also illustrates the ability to override connection options (such as username and password) directly in the `dataSourceOptions` of the `LOAD` statement. The table is loaded into the `casuser` Caslib under the name `my_cas_table_from_redshift`. `ephem=TRUE` indicates that the CAS table is ephemeral.
Copied!
/* Création d'une caslib de base si elle n'existe pas */
caslib redshift_lib_load desc='Caslib Redshift pour Chargement'
dataSource=(srctype='redshift',
server='redshift-server.example.com', /* Remplacez par votre serveur Redshift */
username='redshift_user_load',
password='your_redshift_password_load',
database='your_redshift_database_load');
/* Charger une table 'my_redshift_table' existante de Redshift dans CAS */
/* Les identifiants peuvent être surchargés au niveau de la procédure */
proc casutil;
list files incaslib="redshift_lib_load"; /* Liste les tables disponibles dans la caslib Redshift */
load casdata="my_redshift_table" incaslib="redshift_lib_load"
outcaslib="casuser" casout="my_cas_table_from_redshift"
dataSourceOptions=(
username='user_override', /* Surcharge l'utilisateur */
password='password_override' /* Surcharge le mot de passe */
) ephem=TRUE; /* ephem=TRUE pour une table temporaire */
list files incaslib="casuser"; /* Vérifie la présence de la nouvelle table CAS */
contents casdata="my_cas_table_from_redshift" incaslib="casuser";
quit;
1
/* Création d'une caslib de base si elle n'existe pas */
2
caslib redshift_lib_load desc='Caslib Redshift pour Chargement'
3
dataSource=(srctype='redshift',
4
server='redshift-server.example.com', /* Remplacez par votre serveur Redshift */
5
username='redshift_user_load',
6
password='your_redshift_password_load',
7
database='your_redshift_database_load');
8
9
/* Charger une table 'my_redshift_table' existante de Redshift dans CAS */
10
/* Les identifiants peuvent être surchargés au niveau de la procédure */
11
PROC CASUTIL;
12
list files incaslib="redshift_lib_load"; /* Liste les tables disponibles dans la caslib Redshift */
Explanation : This example illustrates bulk loading data from a CAS table (`casuser.sample_data`) into a new table in Amazon Redshift (`sample_redshift_table`).
1. First, a `sample_data` table is created in CAS with sample data.
2. A `redshift_lib_bulk` Caslib is defined to connect to Redshift, specifying the options `bulkLoad=TRUE`, `bucket` (for the temporary S3 bucket), `region`, `deleteDataFiles=TRUE` to clean up S3 after transfer, and `blFormat='PARQUET'` for the file format used for transfer.
3. `PROC CASUTIL SAVE` is then used to write the CAS table to Redshift via the bulk load mechanism, which uses S3 as an intermediary step.
Copied!
/* 1. Créer une table SAS en mémoire (CAS) pour le chargement */
data casuser.sample_data;
length id 8 name $20 score 8;
input id name $ score;
datalines;
1 John 85
2 Jane 92
3 Mike 78
4 Emily 95
;
run;
/* 2. Établir une connexion à Redshift avec options de chargement en masse */
caslib redshift_lib_bulk desc='Caslib Redshift pour Bulk Load'
dataSource=(srctype='redshift',
server='redshift-server.example.com', /* Remplacez */
username='redshift_user_bulk',
password='your_redshift_password_bulk',
database='your_redshift_database_bulk',
bucket='your-s3-bucket-name', /* Remplacez par votre bucket S3 */
region='us-east-1', /* Remplacez par votre région AWS */
bulkLoad=TRUE, /* Activer le chargement en masse */
deleteDataFiles=TRUE, /* Supprime les fichiers temporaires sur S3 après le chargement */
blFormat='PARQUET' /* Utilise le format Parquet pour le transfert S3 */
);
/* 3. Charger la table CAS dans Amazon Redshift en utilisant le bulk load */
proc casutil;
save casdata="sample_data" incaslib="casuser"
outcaslib="redshift_lib_bulk" casout="sample_redshift_table"
replace; /* replace=TRUE si la table Redshift existe déjà */
quit;
1
/* 1. Créer une table SAS en mémoire (CAS) pour le chargement */
2
DATA casuser.sample_data;
3
LENGTH id 8 name $20 score 8;
4
INPUT id name $ score;
5
DATALINES;
6
1 John 85
7
2 Jane 92
8
3 Mike 78
9
4 Emily 95
10
;
11
RUN;
12
13
/* 2. Établir une connexion à Redshift avec options de chargement en masse */
14
caslib redshift_lib_bulk desc='Caslib Redshift pour Bulk Load'
replace; /* replace=TRUE si la table Redshift existe déjà */
32
QUIT;
4 Code Block
CASLIB
Explanation : This example configures a Caslib to connect to Amazon Redshift using Single Sign-On (SSO) with AWS IAM authentication. It uses `authMethod='IAM'` and includes the `clusterId`, `authenticationScope`, and `awsIAMassumeRoleARN` options, which are required for this type of connection. The option values must be replaced with those from your AWS and Microsoft Entra ID (Azure Active Directory) configuration.
Copied!
/* Établit une connexion SSO à une base de données Amazon Redshift */
caslib redshift_lib_sso desc='Caslib Redshift avec SSO'
dataSource=(srctype='redshift',
server='myserver.redshift.amazonaws.com', /* Remplacez */
username='myuserid', /* Remplacez par votre ID utilisateur */
database='myuserdb', /* Remplacez par votre base de données Redshift */
region='us-east-1', /* Remplacez par votre région AWS */
authMethod='IAM', /* Utilise l'authentification IAM pour SSO */
clusterId='dbrs1', /* Remplacez par l'ID de votre cluster Redshift */
authenticationScope='api://a09827234-93eo-092fjas1-92038498273/awsassumerole', /* Remplacez */
awsIAMassumeRoleARN='arn:aws:iam::129347192347098273:role/myrolename' /* Remplacez */
);
/* Vérifier que la caslib est bien définie */
proc cas; table.caslibinfo caslib='redshift_lib_sso'; run; quit;
1
/* Établit une connexion SSO à une base de données Amazon Redshift */
2
caslib redshift_lib_sso desc='Caslib Redshift avec SSO'
This material is provided "as is" by We Are Cas. There are no warranties, expressed or implied, as to merchantability or fitness for a particular purpose regarding the materials or code contained herein. We Are Cas is not responsible for errors in this material as it now exists or will exist, nor does We Are Cas provide technical support for it.
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration. WeAreCAS is an independent community site and is not affiliated with SAS Institute Inc.
This site uses technical and analytical cookies to improve your experience.
Read more.