

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Consultas programadas con el editor de consultas v2
<a name="query-editor-v2-schedule-query"></a>

Con el editor de consultas V2 de Amazon Redshift, puede automatizar consultas SQL para que se ejecuten de forma programada. Las consultas programadas son instrucciones SQL que se ejecutan automáticamente en momentos o intervalos específicos, lo que le permite administrar de manera eficiente las operaciones de datos recurrentes y las tareas de análisis. Es posible que desee programar consultas si desea agilizar el procesamiento por lotes, generar informes periódicos o mantener las canalizaciones de datos dentro del entorno de Amazon Redshift. 

Las consultas programadas facilitan la automatización de flujos de trabajo de extracción, transformación y carga (ETL), la actualización de paneles con información actualizada y la puesta en práctica de diversas rutinas de administración de datos. En las páginas siguientes se detalla el proceso de creación, configuración y administración de consultas programadas para optimizar las cargas de trabajo de Amazon Redshift.

# Creación de una programación de consultas con el editor de consultas v2
<a name="query-editor-v2-schedule-query-create"></a>

Puede crear una programación que ejecute una instrucción SQL con el editor de consultas de Amazon Redshift versión 2. Puede crear una programación para ejecutar la instrucción SQL en los intervalos de tiempo que coincidan con las necesidades de su empresa. Cuando llega el momento de ejecutar la consulta programada, Amazon EventBridge inicia la consulta y utiliza la API de datos de Amazon Redshift.

**Para crear una programación que ejecute una instrucción SQL**

1. Elija la vista **Editor** ![\[Editor\]](http://docs.aws.amazon.com/es_es/redshift/latest/mgmt/images/qev2-align-left.png) y elija ![\[Schedule\]](http://docs.aws.amazon.com/es_es/redshift/latest/mgmt/images/qev2-calendar.png) **Programación** para crear una programación que ejecute una instrucción SQL.

1. Al definir la programación, se proporciona la siguiente información:
   + El rol de IAM que asume los permisos necesarios para ejecutar la consulta. Este rol de IAM también está asociado a su clúster o grupo de trabajo.
   + Los valores de autenticación para AWS Secrets Manager o las credenciales temporales para autorizar el acceso al clúster o grupo de trabajo. La API de datos admite estos métodos de autenticación. Para obtener más información, consulte [Autenticación de una consulta programada](query-editor-v2-schedule-query-authentication.md).
   + El clúster o grupo de trabajo donde reside la base de datos.
   + El nombre de la tabla de base datos que contiene los datos que se van a consultar.
   + Nombre de la consulta programada y su descripción. El editor de consultas v2 antepone el prefijo "QS2-" al nombre de la consulta programada que usted proporcione. El editor de consultas versión 1 añade el prefijo «QS-» a los nombres de las consultas programadas.
   + La instrucción SQL que se ejecutará según la programación.
   + La frecuencia de la programación y las opciones de repetición o un valor con formato cron que define la programación. Para obtener más información, consulte [Cron Expressions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions) (Expresiones cron) en la *Guía del usuario de Eventos de Amazon CloudWatch*.
   + Si lo desea, puede habilitar las notificaciones de Amazon SNS estándar para supervisar la consulta programada. Puede que tenga que confirmar la dirección de correo electrónico que proporcionó en la notificación de Amazon SNS. Consulte en el correo electrónico si hay un enlace para confirmar la dirección de correo electrónico para las notificaciones de Amazon SNS. Para obtener más información, consulte [Notificaciones por correo electrónico](https://docs.aws.amazon.com/sns/latest/dg/sns-email-notifications.html) en la *Guía para desarrolladores de Amazon Simple Notification Service*. Si su consulta se está ejecutando, pero no ve mensajes publicados en el tema de SNS, consulte [Mi regla se activa pero no veo ningún mensaje publicado en mi tema de Amazon SNS](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-troubleshooting.html#eb-no-messages-published-sns) en la *Guía del usuario de Amazon EventBridge*.

1. Seleccione **Programar consulta** para guardar y activar la programación y añadir la programación a la lista de consultas de la vista **Consultas programadas**.

La vista **Consultas programadas** ![\[Scheduled queries\]](http://docs.aws.amazon.com/es_es/redshift/latest/mgmt/images/qev2-calendar.png) muestra todas las consultas programadas para sus clústeres y grupos de trabajo. En esta vista puede ver los detalles de la programación de la consulta, activar o desactivar la programación, editar la programación y eliminar la consulta programada. Al consultar los detalles de la consulta, también puede ver el historial de ejecución de la consulta con la programación.

**nota**  
Una ejecución de consulta de programación solo está disponible en la lista **Historial de programación** durante 24 horas. Las consultas que se ejecutan de forma programada no aparecen en la vista **Historial de consultas** del editor de consultas v2.

## Demostración de la programación de una consulta
<a name="query-editor-v2-schedule-query-demo"></a>

Para obtener una demostración de la programación de consultas, vea el siguiente vídeo. 

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/gTw0XUpO8sw/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/gTw0XUpO8sw)


# Configuración de permisos para programar una consulta
<a name="query-editor-v2-schedule-query-permissions"></a>

Para programar consultas, el usuario de AWS Identity and Access Management (IAM) que define la programación y el rol de IAM asociado a la programación se deben configurar con los permisos de IAM para poder utilizar Amazon EventBridge y la API de datos de Amazon Redshift. Para recibir correos electrónicos de consultas programadas, también debe configurarse la notificación de Amazon SNS que especifique de forma opcional.

A continuación se describen las tareas para utilizar las políticas administradas de AWS para conceder permisos, pero según el entorno, es posible que prefiera reducir el alcance de los permisos concedidos.

Para el usuario de IAM que haya iniciado sesión en el editor de consultas versión 2, edite el usuario de IAM mediante la consola de IAM ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)).
+ Además de los permisos para ejecutar las operaciones de Amazon Redshift y del editor de consultas versión 2, adjunte las políticas administradas `AmazonEventBridgeFullAccess` y `AmazonRedshiftDataFullAccess` AWS a un usuario de IAM. 
+ Como alternativa, asigne los permisos a un rol y asigne el rol al usuario.

  Adjunte una política con el permiso `sts:AssumeRole` al ARN del recurso del rol de IAM que especifique cuando defina la consulta programada. Para obtener más información sobre cómo asumir roles, consulte [Conceder permisos de usuario para cambiar de rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html) en la *Guía del usuario de IAM*.

  En el siguiente ejemplo, se muestra una política de permisos que asume el rol de IAM `myRedshiftRole` en la cuenta `123456789012`. El rol de IAM `myRedshiftRole` también es el rol de IAM que se adjunta al clúster o grupo de trabajo en el que se ejecuta la consulta programada. 

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AssumeIAMRole",
              "Effect": "Allow",
              "Action": "sts:AssumeRole",
              "Resource": [
                  "arn:aws:iam::123456789012:role/myRedshiftRole"
              ]
          }
      ]
  }
  ```

------

  Actualice la política de confianza del rol de IAM utilizado para programar la consulta a fin de permitir que el usuario de IAM la asuma.

  ```
  {
              "Sid": "AssumeRole",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::123456789012:user/myIAMusername"
              },
              "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

Para el rol de IAM que especifique para permitir la ejecución de la consulta programada, edite el rol de IAM mediante la consola de IAM ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)).
+ Adjunte las políticas administradas `AmazonRedshiftDataFullAccess` y `AmazonEventBridgeFullAccess` de AWS al rol de IAM. La política administrada `AmazonRedshiftDataFullAccess` solo permite el permiso `redshift-serverless:GetCredentials` para los grupos de trabajo Redshift sin servidor que estén etiquetados con la clave `RedshiftDataFullAccess`.

# Autenticación de una consulta programada
<a name="query-editor-v2-schedule-query-authentication"></a>

Cuando programa una consulta, utiliza uno de los siguientes métodos de autenticación cuando se ejecuta el código SQL. Cada método requiere una combinación diferente de entrada en el editor de consultas versión 2. Estos métodos de autenticación son compatibles con la API de datos que se utiliza para ejecutar sus instrucciones SQL.

El usuario o rol de base de datos que se utiliza para ejecutar la consulta debe tener los privilegios de base de datos necesarios. Por ejemplo, para conceder privilegios `IAMR:MyRedshiftQEv2Scheduler` a la tabla `mytable`, ejecute el siguiente comando SQL.

```
GRANT all ON TABLE mytable TO "IAMR:MyRedshiftQEv2Scheduler";
```

Para ver la lista de usuarios de la base de datos en su clúster o grupo de trabajo, consulte la vista del sistema `PG_USER_INFO`.

**nota**  
 Cualquier grupo de trabajo de Redshift sin servidor para el que programe consultas se debe etiquetar con la clave `RedshiftDataFullAccess`. Para obtener más información, consulte [Autorización del acceso a la API de datos de Amazon Redshift](data-api-access.md).  
Como alternativa al etiquetado del grupo de trabajo, puede agregar una política insertada al rol de IAM (que se especifica con la programación) que permita `redshift-serverless:GetCredentials`. Por ejemplo:  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "UseTemporaryCredentialsForAllServerlessWorkgroups",
            "Effect": "Allow",
            "Action": "redshift-serverless:GetCredentials",
            "Resource": [
                "arn:aws:redshift-serverless:*:*:workgroup/*"
            ]
        }
    ]
}
```

**AWS Secrets Manager**  
Con este método, se proporciona un valor secreto para **secret-arn** que se almacena en AWS Secrets Manager. Este secreto contiene las credenciales para conectarse a la base de datos. Es posible que haya creado un secreto con las credenciales adecuadas al crear el clúster o el grupo de trabajo. El secreto debe estar etiquetado con la clave `RedshiftDataFullAccess`. Si la clave de etiqueta aún no está presente, utilice la consola de AWS Secrets Manager para agregarla. Para obtener información sobre cómo crear un secreto, consulte [Creación de un secreto para las credenciales de conexión a la base de datos](redshift-secrets-manager-integration-create.md).  
Para obtener más información acerca de los permisos mínimos, consulte [Creación y administración de secretos con AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html) en la *Guía del usuario de AWS Secrets Manager*. 

**Credenciales temporales**  
Con este método, proporcione los valores **Nombre de la base de datos** y **Usuario de la base de datos** cuando se conecte a una base de datos de un clúster. Solo necesita proporcionar el **Nombre de base de datos** cuando se conecte a una base de datos de un grupo de trabajo.  
Al conectarse a un clúster, la política `AmazonRedshiftDataFullAccess` permite al usuario de la base de datos denominado `redshift_data_api_user` el permiso para `redshift:GetClusterCredentials`. Si desea utilizar un usuario de base de datos diferente para ejecutar la instrucción SQL, agregue una política al rol de IAM adjunta a su clúster para permitir `redshift:GetClusterCredentials`. La siguiente política de ejemplo permite a los usuarios de la base de datos `awsuser` y `myuser`.     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "UseTemporaryCredentialsForAllDbUsers",
            "Effect": "Allow",
            "Action": "redshift:GetClusterCredentials",
            "Resource": [
                "arn:aws:redshift:*:*:dbuser:*/awsuser",
                "arn:aws:redshift:*:*:dbuser:*/myuser"
            ]
        }
    ]
}
```

# Configuración de permisos para el historial de consultas de la programación
<a name="query-editor-v2-schedule-query-view-history"></a>

Para permitir a los usuarios ver el historial de consultas de la programación, edite el rol de IAM (que se especifica con la programación) **Relaciones de confianza** para agregar permisos.

El ejemplo siguiente es una política de confianza en un rol de IAM que permite al usuario de IAM *myIAMusername* ver el historial de consultas de la programación. En lugar de permitir a un usuario de IAM el permiso `sts:AssumeRole`, puede elegir permitir a un rol de IAM este permiso.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "redshift.amazonaws.com",
                    "redshift-serverless.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "events.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AssumeRole",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/myIAMusername"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

# Monitoreo de la consulta programada
<a name="query-editor-v2-schedule-query-sns"></a>

Para el tema de Amazon SNS que especifique para enviar notificaciones por correo electrónico, cree el tema de Amazon SNS mediante el editor de consultas v2; para ello, navegue hasta la sección **Notificaciones SNS**, **active** el monitoreo y cree el tema con **Crear un tema de SNS**. El editor de consultas v2 crea el tema de Amazon SNS y agrega una entidad principal de servicio a la política de acceso para Amazon EventBridge. A continuación, se muestra un ejemplo de **Política de acceso** que se crea en el tema de Amazon SNS. En el ejemplo, se usan la Región de AWS *us-west-2*, la Cuenta de AWS *123456789012* y el tema de Amazon SNS *select-version-pdx-testunload*.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "Allow_Publish_Events",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:us-west-2:123456789012:select-version-pdx-testunload"
    }
  ]
}
```

------

Cuando se ejecuta la consulta programada, Amazon SNS envía correos electrónicos de notificación de AWS. El siguiente ejemplo muestra un correo electrónico enviado a *myemail@example.com* para la consulta programada *QS2-may25a* que se ejecutó en Región de AWS *eu-north-1* en Cuenta de AWS *123456789012* mediante el tema de notificación *may25a-SNS* de Amazon SNS.

```
{"version":"0","id":"8e4323ec-5258-7138-181b-91290e30ff9b","detail-type":"Scheduled Event","source":"aws.events","account":"123456789012","time":"2023-05-25T15:22:00Z",
                    "region":"eu-north-1","resources":["arn:aws:events:eu-north-1:123456789012:rule/QS2-may25a"],"detail":{}}

--
If you wish to stop receiving notifications from this topic, please click or visit the link below to unsubscribe:
https://sns.eu-north-1.amazonaws.com/unsubscribe.html?SubscriptionArn=arn:aws:sns:eu-north-1:123456789012:may25a-SNS:0c1a3d05-39c2-4507-bc3d-47250513d7b0&Endpoint=myemail@example.com

Please do not reply directly to this email. If you have any questions or comments regarding this email, please contact us at https://aws.amazon.com/support
```

# Solución de problemas de configuración de la programación de una consulta
<a name="query-editor-v2-schedule-query-troubleshooting"></a>

Tenga en cuenta lo siguiente si tiene problemas para programar una consulta.

**Las consultas no se están ejecutando**  
Compruebe si el rol de IAM utilizado en la programación tiene permiso para obtener las credenciales  de clúster temporales. El permiso para los clústeres aprovisionados es `redshift:GetClusterCredentialsWithIAM`. El permiso para los grupos de trabajo de Redshift sin servidor es `redshift-serverless:GetCredentials`.

**No se muestra el historial programado**  
El usuario de IAM o rol de IAM utilizado para iniciar sesión en la consola de AWS no se ha agregado a la política de confianza del rol de IAM utilizado para programar la consulta.  
Al utilizar AWS Secrets Manager para la consulta programada para la conexión, confirme que el secreto esté etiquetado con la clave `RedshiftDataFullAccess`.  
Si la consulta programada utiliza una conexión de AWS Secrets Manager, el rol de IAM utilizado para programar la consulta debe tener el equivalente a una política administrada `SecretsManagerReadWrite` asociada al rol.

**El estado del historial de consultas es `Failed`**  
Consulte la vista del sistema SYS\$1QUERY\$1HISTORY para obtener detalles sobre por qué se produjo un error en la consulta. Un problema habitual es que el usuario o el rol de la base de datos que se utilizó para ejecutar la consulta podría no tener los privilegios necesarios para ejecutar el código SQL. Para obtener más información, consulte [Autenticación de una consulta programada](query-editor-v2-schedule-query-authentication.md).  
El siguiente código SQL consulta la vista SYS\$1QUERY\$1HISTORY para devolver las consultas con errores.  

```
SELECT user_id, query_id, transaction_id, session_id, database_name, query_type, status, error_message, query_text 
FROM sys_query_history
WHERE status = 'failed';
```
Para conocer los detalles de una determinada consulta programada con errorrd , consulte [Visualización de los resultados de una consulta programada con AWS CloudShell](query-editor-v2-schedule-query-troubleshooting-cloudshell.md).

# Visualización de los resultados de una consulta programada con AWS CloudShell
<a name="query-editor-v2-schedule-query-troubleshooting-cloudshell"></a>

Puede utilizar AWS CloudShell para conocer los detalles de una consulta programada. Debe tener los permisos adecuados para ejecutar los comandos de la AWS CLI que se muestran en el procedimiento siguiente.

**Para ver los resultados de una consulta programada**

1. En la consola de AWS, abra el símbolo del sistema de AWS CloudShell. Para obtener más información acerca de AWS CloudShell, consulte [¿Qué es AWS CloudShell?](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) en la *Guía del usuario de AWS CloudShell*.

1. Asuma el rol de IAM de la consulta programada. Para asumir el rol, busque el rol de IAM asociado a la consulta programada en el editor de consultas v2 y utilícelo en el comando AWS CLI en AWS CloudShell. Por ejemplo, para el rol `scheduler` introduzca un comando AWS STS para asumir el rol que utiliza la consulta programada.

   ```
   aws sts assume-role --role-arn "arn:aws:iam::123456789012:role/scheduler" --role-session-name "scheduler-test" 
   ```

   Las credenciales devueltas son similares a las siguientes.

   ```
   "Credentials": {
   "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
   "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
   "SessionToken": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY...",        
   "Expiration": "2023-08-18T18:19:44+00:00"
   },
   "AssumedRoleUser": {
   "AssumedRoleId": "AROA35B2NH6WBTP7ONL4E:scheduler-test",
   "Arn": "arn:aws:sts::123456789012:assumed-role/scheduler/scheduler-test"
   }
   }
   ```

1. Cree variables de entorno en la AWS CLI mediante las credenciales que se muestran al asumir el rol de IAM. Debe utilizar estos tokens antes de que caduquen. Por ejemplo, puede introducir lo siguiente en AWS CloudShell.

   ```
   export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
   export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   export AWS_SESSION_TOKEN=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY...
   ```

1. Para ver el error de una consulta con errores, ejecute el comando AWS CLI para describir una instrucción. El ID de la instrucción SQL procede del **ID** que aparece en la sección **Historial de programación** de una consulta programada en el editor de consultas v2.

   ```
   aws redshift-data describe-statement --id 130d2620-05d2-439c-b7cf-815d9767f513
   ```

   En este ejemplo, la instrucción SQL programada `select * from users limit 100` da como resultado un error de SQL que indica que la tabla `users` no existe.

   ```
   {
   "CreatedAt": "2023-08-18T17:39:15.563000+00:00",
   "Duration": -1,
   "Error": "ERROR: relation \"users\" does not exist",
   "HasResultSet": false,
   "Id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
   "QueryString": "select * from users limit 100\n—RequestID=a1b2c3d4-5678-90ab-cdef-EXAMPLE22222; TraceID=1-633c5642-4039308d03f3a0ba53dbdf6f",
   "RedshiftPid": 1073766651,
   "RedshiftQueryId": 0,
   "ResultRows": -1,
   "ResultSize": -1,
   "Status": "FAILED",
   "UpdatedAt": "2023-08-18T17:39:16.116000+00:00",
   "WorkgroupName": "default"
   }
   ```