/****************************************************************************** * Programme : Conector de datos Amazon Redshift * Reference : CONECTECDF * Source : https://www.wearecas.eu/de/sampleCode/CONECTECDF ******************************************************************************/ /* --- BLOC 1 --- */ /* É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; /* --- BLOC 2 --- */ /* 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; /* --- BLOC 3 --- */ /* 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; /* --- BLOC 4 --- */ /* É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;