Publicado el :
ETL BASE_DE_DATOS_EXTERNA

Conector de datos Amazon Redshift

Este código también está disponible en: Deutsch English Español
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_DATOS_EXTERNA


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/* Establece una conexión sencilla a una base de datos Amazon Redshift. */
2caslib redshift_lib_basic desc='Caslib Redshift Básica'
3 dataSource=(srctype='redshift',
4 server='redshift-server.example.com', /* Reemplace por su servidor Redshift */
5 username='redshift_user',
6 password='your_redshift_password',
7 database='your_redshift_database');
8 
9/* Verificar que la caslib esté bien definida */
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/* Creación de una caslib básica si no existe */
2caslib redshift_lib_load desc='Caslib Redshift para Carga'
3 dataSource=(srctype='redshift',
4 server='redshift-server.example.com', /* Reemplace por su servidor Redshift */
5 username='redshift_user_load',
6 password='your_redshift_password_load',
7 database='your_redshift_database_load');
8 
9/* Cargar una tabla 'my_redshift_table' existente de Redshift en CAS */
10/* Las credenciales pueden ser sobrescritas a nivel de procedimiento */
11PROC CASUTIL;
12 list files incaslib="redshift_lib_load"; /* Lista las tablas disponibles en 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', /* Sobrescribe el usuario */
18 password='password_override' /* Sobrescribe la contraseña */
19 ) ephem=TRUE; /* ephem=TRUE para una tabla temporal */
20
21 list files incaslib="casuser"; /* Verifica la presencia de la nueva tabla CAS */
22 contents casdata="my_cas_table_from_redshift" incaslib="casuser";
23QUIT;
3 Bloque de código
DATA STEP / PROC CASUTIL Data
¡Copiado!
1/* 1. Crear una tabla SAS en memoria (CAS) para la carga */
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. Establecer una conexión a Redshift con opciones de carga masiva */
14caslib redshift_lib_bulk desc='Caslib Redshift para Carga Masiva'
15 dataSource=(srctype='redshift',
16 server='redshift-server.example.com', /* Reemplace */
17 username='redshift_user_bulk',
18 password='your_redshift_password_bulk',
19 database='your_redshift_database_bulk',
20 bucket='your-s3-bucket-name', /* Reemplace por su bucket S3 */
21 region='us-east-1', /* Reemplace por su región AWS */
22 bulkLoad=TRUE, /* Activar la carga masiva */
23 deleteDataFiles=TRUE, /* Elimina los archivos temporales en S3 después de la carga */
24 blFormat='PARQUET' /* Utiliza el formato Parquet para la transferencia S3 */
25 );
26 
27/* 3. Cargar la tabla CAS en Amazon Redshift utilizando la carga masiva */
28PROC CASUTIL;
29 save casdata="sample_data" incaslib="casuser"
30 outcaslib="redshift_lib_bulk" casout="sample_redshift_table"
31 replace; /* replace=TRUE si la tabla Redshift ya existe */
32QUIT;
4 Bloque de código
CASLIB
¡Copiado!
1/* Establece una conexión SSO a una base de datos Amazon Redshift */
2caslib redshift_lib_sso desc='Caslib Redshift con SSO'
3 dataSource=(srctype='redshift',
4 server='myserver.redshift.amazonaws.com', /* Reemplace */
5 username='myuserid', /* Reemplace por su ID de usuario */
6 database='myuserdb', /* Reemplace por su base de datos Redshift */
7 region='us-east-1', /* Reemplace por su región AWS */
8 authMethod='IAM', /* Utiliza la autenticación IAM para SSO */
9 clusterId='dbrs1', /* Reemplace por el ID de su clúster Redshift */
10 authenticationScope='api://a09827234-93eo-092fjas1-92038498273/awsassumerole', /* Reemplace */
11 awsIAMassumeRoleARN='arn:aws:iam::129347192347098273:role/myrolename' /* Reemplace */
12 );
13 
14/* Verificar que la caslib esté bien definida */
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