Publié le :
ETL BASE_DE_DONNEES_EXTERNE

Connecteur de données Amazon Redshift

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le connecteur de données Amazon Redshift facilite l'intégration des données hébergées sur Amazon Redshift avec l'environnement d'analyse distribuée de SAS© Viya. Il s'appuie sur la déclaration CASLIB pour définir la connexion et sur PROC CASUTIL pour manipuler les données. Des options spécifiques sont disponibles pour gérer l'authentification (y compris le SSO avec Microsoft Entra ID et AWS IAM), le chargement et le déchargement en masse (via S3 pour des performances accrues), et la conversion des types de données entre Redshift et CAS. Les types de données CHAR et VARCHAR de Redshift sont gérés en termes d'octets, tandis que le serveur CAS prend en charge le VARCHAR et convertit les types numériques entiers en DOUBLE pour les opérations non prises en charge directement par CAS, avec une précision de 15 chiffres.
Analyse des données

Type : BASE_DE_DONNEES_EXTERNE


Les exemples interagissent avec une base de données Amazon Redshift externe. Les noms de tables Redshift utilisés dans les exemples sont des placeholdes et doivent exister dans l'environnement Redshift de l'utilisateur. Pour la création de données internes à SAS, des étapes DATA sont fournies.

1 Bloc de code
CASLIB
Explication :
Cet exemple crée une bibliothèque de données CAS (caslib) nommée `redshift_lib_basic` qui se connecte à une base de données Amazon Redshift. Il utilise les options `srctype` pour spécifier le type de source, `server`, `username`, `password` et `database` pour les informations de connexion. Remplacez les valeurs des options par vos propres informations de connexion Redshift.
Copié !
1/* Établit une connexion simple à une base de données Amazon Redshift. */
2caslib redshift_lib_basic desc='Caslib Redshift Basique'
3 dataSource=(srctype='redshift',
4 server='redshift-server.example.com', /* Remplacez par votre serveur Redshift */
5 username='redshift_user',
6 password='your_redshift_password',
7 database='your_redshift_database');
8 
9/* Vérifier que la caslib est bien définie */
10PROC CAS; TABLE.caslibinfo caslib='redshift_lib_basic'; RUN; QUIT;
2 Bloc de code
PROC CASUTIL
Explication :
Cet exemple montre comment charger une table existante depuis Amazon Redshift (`my_redshift_table`) vers le serveur CAS en utilisant `PROC CASUTIL`. Il illustre également la capacité à surcharger les options de connexion (comme le nom d'utilisateur et le mot de passe) directement dans les `dataSourceOptions` de la déclaration `LOAD`. La table est chargée dans la caslib `casuser` sous le nom `my_cas_table_from_redshift`. `ephem=TRUE` indique que la table CAS est éphémère.
Copié !
1/* Création d'une caslib de base si elle n'existe pas */
2caslib 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 */
11PROC CASUTIL;
12 list files incaslib="redshift_lib_load"; /* Liste les tables disponibles dans la caslib Redshift */
13
14 load casdata="my_redshift_table" incaslib="redshift_lib_load"
15 outcaslib="casuser" casout="my_cas_table_from_redshift"
16 dataSourceOptions=(
17 username='user_override', /* Surcharge l'utilisateur */
18 password='password_override' /* Surcharge le mot de passe */
19 ) ephem=TRUE; /* ephem=TRUE pour une table temporaire */
20
21 list files incaslib="casuser"; /* Vérifie la présence de la nouvelle table CAS */
22 contents casdata="my_cas_table_from_redshift" incaslib="casuser";
23QUIT;
3 Bloc de code
DATA STEP / PROC CASUTIL Data
Explication :
Cet exemple illustre le chargement en masse (bulk load) de données depuis une table CAS (`casuser.sample_data`) vers une nouvelle table dans Amazon Redshift (`sample_redshift_table`).
1. Une table `sample_data` est d'abord créée dans CAS avec des données d'exemple.
2. Une caslib `redshift_lib_bulk` est définie pour se connecter à Redshift, en spécifiant les options `bulkLoad=TRUE`, `bucket` (pour le bucket S3 intermédiaire), `region`, `deleteDataFiles=TRUE` pour nettoyer S3 après le transfert et `blFormat='PARQUET'` pour le format de fichier utilisé pour le transfert.
3. `PROC CASUTIL SAVE` est ensuite utilisée pour écrire la table CAS dans Redshift via le mécanisme de bulk load, qui utilise S3 comme étape intermédiaire.
Copié !
1/* 1. Créer une table SAS en mémoire (CAS) pour le chargement */
2DATA casuser.sample_data;
3 LENGTH id 8 name $20 score 8;
4 INPUT id name $ score;
5 DATALINES;
61 John 85
72 Jane 92
83 Mike 78
94 Emily 95
10;
11RUN;
12 
13/* 2. Établir une connexion à Redshift avec options de chargement en masse */
14caslib redshift_lib_bulk desc='Caslib Redshift pour Bulk Load'
15 dataSource=(srctype='redshift',
16 server='redshift-server.example.com', /* Remplacez */
17 username='redshift_user_bulk',
18 password='your_redshift_password_bulk',
19 database='your_redshift_database_bulk',
20 bucket='your-s3-bucket-name', /* Remplacez par votre bucket S3 */
21 region='us-east-1', /* Remplacez par votre région AWS */
22 bulkLoad=TRUE, /* Activer le chargement en masse */
23 deleteDataFiles=TRUE, /* Supprime les fichiers temporaires sur S3 après le chargement */
24 blFormat='PARQUET' /* Utilise le format Parquet pour le transfert S3 */
25 );
26 
27/* 3. Charger la table CAS dans Amazon Redshift en utilisant le bulk load */
28PROC CASUTIL;
29 save casdata="sample_data" incaslib="casuser"
30 outcaslib="redshift_lib_bulk" casout="sample_redshift_table"
31 replace; /* replace=TRUE si la table Redshift existe déjà */
32QUIT;
4 Bloc de code
CASLIB
Explication :
Cet exemple configure une caslib pour se connecter à Amazon Redshift en utilisant le Single Sign-On (SSO) avec l'authentification AWS IAM. Il utilise `authMethod='IAM'` et inclut les options `clusterId`, `authenticationScope`, et `awsIAMassumeRoleARN` qui sont nécessaires pour ce type de connexion. Les valeurs des options doivent être remplacées par celles de votre configuration AWS et Microsoft Entra ID (Azure Active Directory).
Copié !
1/* Établit une connexion SSO à une base de données Amazon Redshift */
2caslib redshift_lib_sso desc='Caslib Redshift avec SSO'
3 dataSource=(srctype='redshift',
4 server='myserver.redshift.amazonaws.com', /* Remplacez */
5 username='myuserid', /* Remplacez par votre ID utilisateur */
6 database='myuserdb', /* Remplacez par votre base de données Redshift */
7 region='us-east-1', /* Remplacez par votre région AWS */
8 authMethod='IAM', /* Utilise l'authentification IAM pour SSO */
9 clusterId='dbrs1', /* Remplacez par l'ID de votre cluster Redshift */
10 authenticationScope='api://a09827234-93eo-092fjas1-92038498273/awsassumerole', /* Remplacez */
11 awsIAMassumeRoleARN='arn:aws:iam::129347192347098273:role/myrolename' /* Remplacez */
12 );
13 
14/* Vérifier que la caslib est bien définie */
15PROC CAS; TABLE.caslibinfo caslib='redshift_lib_sso'; RUN; QUIT;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Copyright © SAS Institute Inc. All Rights Reserved