

# Conector para TPC Benchmark DS (TPC-DS) de Amazon Athena
<a name="connectors-tpcds"></a>

El conector de TPC-DS de Amazon Athena permite que este servicio se comunique con un origen de datos de TPC Benchmark DS generados aleatoriamente para usarlo en evaluaciones comparativas y pruebas de funcionamiento de la federación de Athena. El conector Athena TPC-DS genera una base de datos compatible con TPC-DS en uno de cuatro factores de escala. No recomendamos usar este conector como alternativa a las pruebas de rendimiento de lagos de datos basados en Amazon S3.

Este conector se puede registrar en el Catálogo de datos de Glue como un catálogo federado. Admite los controles de acceso a los datos definidos en Lake Formation a nivel de catálogo, base de datos, tabla, columna, fila y etiqueta. Este conector utiliza Conexiones de Glue para centralizar las propiedades de configuración en Glue.

## Requisitos previos
<a name="connectors-tpcds-prerequisites"></a>
+ Implemente el conector en su Cuenta de AWS mediante la consola de Athena o AWS Serverless Application Repository. Para obtener más información, consulte [Cómo crear una conexión de origen de datos](connect-to-a-data-source.md) o [Uso del AWS Serverless Application Repository para implementar un conector de origen de datos](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-tpcds-parameters"></a>

Utilice los parámetros de esta sección para configurar el conector de TPC-DS.

**nota**  
Los conectores de orígenes de datos de Athena creados a partir del 3 de diciembre de 2024 utilizan conexiones de AWS Glue.  
Los nombres y definiciones de los parámetros que se indican a continuación corresponden a conectores de orígenes de datos de Athena creados antes del 3 de diciembre de 2024. Estos pueden variar respecto a las [propiedades de conexión de AWS Glue correspondientes](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html). A partir del 3 de diciembre de 2024, utilice los parámetros que se indican a continuación únicamente al [implementar manualmente](connect-data-source-serverless-app-repo.md) una versión anterior de un conector de origen de datos de Athena.

### Conectores federados de AWS Glue Data Catalog
<a name="connectors-tpcds-gc"></a>

Recomendamos configurar un conector de TPC-DS por medio de un objeto de conexiones de Glue. Para ello, establezca la variable de entorno `glue_connection` de la función de Lambda del conector TPC-DS con el nombre de la conexión de Glue que se va a utilizar.

**Propiedades de las conexiones de Glue**

Utilice el siguiente comando para obtener el esquema de un objeto de conexión de Glue. Este esquema contiene todos los parámetros que puede utilizar para controlar su conexión.

```
aws glue describe-connection-type --connection-type TPCDS
```

**Propiedades del entorno de Lambda**

Las siguientes propiedades del entorno de Lambda se aplican solo cuando utiliza el conector con una función de Lambda en su cuenta.
+ **glue\_connection**: especifica el nombre de la conexión de Glue asociada al conector federado.

**nota**  
Todos los conectores que utilizan una conexión federada de AWS Glue Data Catalog deben utilizar AWS Secrets Manager para almacenar credenciales.
El conector de TPC-DS creado por medio de una conexión federada de AWS Glue Data Catalog no admite el uso de un controlador de multiplexación.
El conector de TPC-DS creado por medio de una conexión federada de AWS Glue Data Catalog solo es compatible con `ConnectionSchemaVersion` 2.

### Conectores federados del catálogo de datos de Athena
<a name="connectors-tpcds-legacy"></a>
+ **spill\_bucket**: especifica el bucket de Amazon S3 para los datos que superen los límites de la función de Lambda.
+ **spill\_prefix**: (opcional) de forma predeterminada, se establece una subcarpeta en la carpeta especificada `spill_bucket` llamada `athena-federation-spill`. Le recomendamos configurar un [ciclo de vida de almacenamiento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) de Amazon S3 en esta ubicación para eliminar vertidos de más de un número predeterminado de días u horas.
+ **spill\_put\_request\_headers**: (opcional) un mapa codificado en JSON de encabezados y valores de solicitudes para la solicitud `putObject` de Amazon S3 que se usa para el vertidos (por ejemplo, `{"x-amz-server-side-encryption" : "AES256"}`). Para ver otros encabezados posibles, consulte [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) en la *referencia de la API de Amazon Simple Storage Service*.
+ **kms\_key\_id**: (opcional) de forma predeterminada, los datos que se vierten a Amazon S3 se cifran mediante el modo de cifrado autenticado AES-GCM y una clave generada aleatoriamente. Para que la función de Lambda use claves de cifrado más seguras generadas por KMS, como `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, puede especificar un ID de clave de KMS.
+ **disable\_spill\_encryption**: (opcional) cuando se establece en `True`, desactiva el cifrado del vertido. El valor predeterminado es `False`, de modo que los datos que se vierten a S3 se cifran mediante AES-GCM, ya sea mediante una clave generada aleatoriamente o KMS para generar claves. La desactivación del cifrado de vertido puede mejorar el rendimiento, especialmente si su ubicación de vertido usa [cifrado del servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

## Prueba de bases de datos y tablas
<a name="connectors-tpcds-test-databases-and-tables"></a>

El conector de TPC-DS de Athena genera una base de datos compatible con TPC-DS en uno de cuatro factores de escala: `tpcds1`, `tpcds10`, `tpcds100`, `tpcds250` o `tpcds1000`.

### Resumen de tablas
<a name="connectors-tpcds-table-summary"></a>

Para obtener una lista completa de las tablas y columnas de datos de prueba, ejecute las consultas `SHOW TABLES` o `DESCRIBE TABLE`. Se proporciona el siguiente resumen de tablas para mayor comodidad.

1. call\_center

1. catalog\_page

1. catalog\_returns

1. catalog\_sales

1. cliente

1. customer\_address

1. customer\_demographics

1. date\_dim

1. dbgen\_version

1. household\_demographics

1. income\_band

1. inventario

1. elemento

1. promotion

1. razón

1. ship\_mode

1. almacenar

1. store\_returns

1. store\_sales

1. time\_dim

1. almacén

1. web\_page

1. web\_returns

1. web\_sales

1. web\_site

Para las consultas de TPC-DS que sean compatibles con este esquema y datos generados, consulte el directorio [athena-tpcds/src/main/resources/queries/](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds/src/main/resources/queries) en GitHub.

### Consulta de ejemplo
<a name="connectors-tpcds-example-query"></a>

El siguiente ejemplo de consulta `SELECT` revisa en el catálogo de `tpcds` los datos demográficos de clientes de condados específicos.

```
SELECT
  cd_gender,
  cd_marital_status,
  cd_education_status,
  count(*) cnt1,
  cd_purchase_estimate,
  count(*) cnt2,
  cd_credit_rating,
  count(*) cnt3,
  cd_dep_count,
  count(*) cnt4,
  cd_dep_employed_count,
  count(*) cnt5,
  cd_dep_college_count,
  count(*) cnt6
FROM
  "lambda:tpcds".tpcds1.customer c, "lambda:tpcds".tpcds1.customer_address ca, "lambda:tpcds".tpcds1.customer_demographics
WHERE
  c.c_current_addr_sk = ca.ca_address_sk AND
    ca_county IN ('Rush County', 'Toole County', 'Jefferson County',
                  'Dona Ana County', 'La Porte County') AND
    cd_demo_sk = c.c_current_cdemo_sk AND
    exists(SELECT *
           FROM "lambda:tpcds".tpcds1.store_sales, "lambda:tpcds".tpcds1.date_dim
           WHERE c.c_customer_sk = ss_customer_sk AND
             ss_sold_date_sk = d_date_sk AND
             d_year = 2002 AND
             d_moy BETWEEN 1 AND 1 + 3) AND
    (exists(SELECT *
            FROM "lambda:tpcds".tpcds1.web_sales, "lambda:tpcds".tpcds1.date_dim
            WHERE c.c_customer_sk = ws_bill_customer_sk AND
              ws_sold_date_sk = d_date_sk AND
              d_year = 2002 AND
              d_moy BETWEEN 1 AND 1 + 3) OR
      exists(SELECT *
             FROM "lambda:tpcds".tpcds1.catalog_sales, "lambda:tpcds".tpcds1.date_dim
             WHERE c.c_customer_sk = cs_ship_customer_sk AND
               cs_sold_date_sk = d_date_sk AND
               d_year = 2002 AND
               d_moy BETWEEN 1 AND 1 + 3))
GROUP BY cd_gender,
  cd_marital_status,
  cd_education_status,
  cd_purchase_estimate,
  cd_credit_rating,
  cd_dep_count,
  cd_dep_employed_count,
  cd_dep_college_count
ORDER BY cd_gender,
  cd_marital_status,
  cd_education_status,
  cd_purchase_estimate,
  cd_credit_rating,
  cd_dep_count,
  cd_dep_employed_count,
  cd_dep_college_count
LIMIT 100
```

## Permisos necesarios
<a name="connectors-tpcds-required-permissions"></a>

Para obtener información completa sobre las políticas de IAM que requiere este conector, consulte la sección `Policies` del archivo [athena-tpcds.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-tpcds/athena-tpcds.yaml). En la siguiente lista se resumen los permisos requeridos.
+ **Acceso de escritura a Amazon S3**: el conector requiere acceso de escritura a una ubicación de Amazon S3 para volcar los resultados de consultas de gran tamaño.
+ **Athena GetQueryExecution**: el conector usa este permiso para fallar rápidamente cuando finaliza la consulta ascendente de Athena.

## Rendimiento
<a name="connectors-tpcds-performance"></a>

El conector de TPC-DS de Athena intenta paralelizar las consultas en función del factor de escala que elija. La inserción de predicados se lleva a cabo dentro de la función de Lambda.

## Información sobre licencias
<a name="connectors-tpcds-license-information"></a>

El proyecto de conector de TPC-DS de Amazon Athena está cubierto por la [Licencia de Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Recursos adicionales
<a name="connectors-tpcds-additional-resources"></a>

Para obtener más información acerca de este conector, consulte [el sitio correspondiente](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds) en GitHub.com.