Publicado el :
ETL BASE_DE_DONNEES_EXTERNE

Conector de datos de Amazon Redshift

Este código también está disponible en: Deutsch English
En espera de validación
El conector de datos de Amazon Redshift facilita la integración de datos alojados en Amazon Redshift con el entorno de análisis distribuido de SAS© Viya. Se basa en la instrucción CASLIB para definir la conexión y PROC CASUTIL para manipular los datos. Hay opciones específicas disponibles para gestionar la autenticación (incluyendo SSO con Microsoft Entra ID y AWS IAM), la carga y descarga masiva (a través de S3 para un mayor rendimiento), y la conversión de tipos de datos entre Redshift y CAS. Los tipos de datos CHAR y VARCHAR de Redshift se manejan en términos de bytes, mientras que el servidor CAS admite VARCHAR y convierte los tipos numéricos enteros a DOUBLE para operaciones no directamente admitidas por CAS, con una precisión de 15 dígitos.
Análisis de datos

Type : BASE_DE_DONNEES_EXTERNE


Los ejemplos interactúan con una base de datos externa de Amazon Redshift. Los nombres de las tablas de Redshift utilizados en los ejemplos son marcadores de posición y deben existir en el entorno de Redshift del usuario. Para la creación interna de datos SAS, se proporcionan pasos DATA.

1 Bloque de código
CASLIB
Explicación :
Este ejemplo crea una biblioteca de datos CAS (caslib) llamada `redshift_lib_basic` que se conecta a una base de datos de Amazon Redshift. Utiliza las opciones `srctype` para especificar el tipo de origen, `server`, `username`, `password` y `database` para la información de conexión. Reemplace los valores de las opciones con su propia información de conexión de Redshift.
¡Copiado!
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 Bloque de código
PROC CASUTIL
Explicación :
Este ejemplo muestra cómo cargar una tabla existente de Amazon Redshift (`my_redshift_table`) al servidor CAS usando `PROC CASUTIL`. También ilustra la capacidad de sobrescribir las opciones de conexión (como nombre de usuario y contraseña) directamente dentro de las `dataSourceOptions` de la instrucción `LOAD`. La tabla se carga en la caslib `casuser` con el nombre `my_cas_table_from_redshift`. `ephem=TRUE` indica que la tabla CAS es efímera.
¡Copiado!
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 Bloque de código
DATA STEP / PROC CASUTIL Data
Explicación :
Este ejemplo ilustra la carga masiva de datos desde una tabla CAS (`casuser.sample_data`) a una nueva tabla en Amazon Redshift (`sample_redshift_table`).
1. Primero se crea una tabla `sample_data` en CAS con datos de ejemplo.
2. Se define una caslib `redshift_lib_bulk` para conectarse a Redshift, especificando las opciones `bulkLoad=TRUE`, `bucket` (para el bucket S3 intermedio), `region`, `deleteDataFiles=TRUE` para limpiar S3 después de la transferencia, y `blFormat='PARQUET'` para el formato de archivo utilizado para la transferencia.
3. Luego se utiliza `PROC CASUTIL SAVE` para escribir la tabla CAS en Redshift a través del mecanismo de carga masiva, que utiliza S3 como paso intermedio.
¡Copiado!
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 Bloque de código
CASLIB
Explicación :
Este ejemplo configura una caslib para conectarse a Amazon Redshift utilizando Single Sign-On (SSO) con autenticación AWS IAM. Utiliza `authMethod='IAM'` e incluye las opciones `clusterId`, `authenticationScope` y `awsIAMassumeRoleARN` que son necesarias para este tipo de conexión. Los valores de las opciones deben reemplazarse con los de su configuración de AWS y Microsoft Entra ID (Azure Active Directory).
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved