Publicado el :
ETL BASE_DE_DONNEES_EXTERNE

Conector de datos Amazon Redshift

Este código también está disponible en: Deutsch English Español Français
En espera de validación
El conector de datos Amazon Redshift facilita la integración de los datos alojados en Amazon Redshift con el entorno de análisis distribuido de SAS© Viya. Se basa en la declaración CASLIB para definir la conexión y en PROC CASUTIL para manipular los datos. Hay opciones específicas disponibles para gestionar la autenticación (incluido el 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 gestionan en términos de bytes, mientras que el servidor CAS admite VARCHAR y convierte los tipos numéricos enteros a DOUBLE para las operaciones no soportadas directamente 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 Amazon Redshift externa. Los nombres de las tablas Redshift utilizados en los ejemplos son marcadores de posición y deben existir en el entorno Redshift del usuario. Para la creación de datos internos en 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 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 el nombre de usuario y la contraseña) directamente en las `dataSourceOptions` de la declaración `LOAD`. La tabla se carga en la caslib `casuser` bajo 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 en la transferencia.
3. `PROC CASUTIL SAVE` se usa luego 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 usando 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 por 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