

# Conector Google BigQuery de Amazon Athena
<a name="connectors-bigquery"></a>

El conector de Google [BigQuery](https://cloud.google.com/bigquery/) de Amazon Athena permite que Amazon Athena ejecute consultas de SQL en los datos de Google BigQuery.

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-bigquery-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).

## Limitaciones
<a name="connectors-bigquery-limitations"></a>
+ Las funciones de Lambda tienen un valor máximo de tiempo de espera de 15 minutos. Cada división ejecuta una consulta en BigQuery y debe finalizar con tiempo suficiente para almacenar los resultados para que Athena los lea. Si se agota el tiempo de espera de la función de Lambda, se produce un error en la consulta.
+ Google BigQuery distingue entre mayúsculas y minúsculas. El conector intenta corregir las mayúsculas y las minúsculas de los nombres del conjunto de datos, de las tablas y de los id. de proyectos. Esto es necesario porque Athena pone en minúsculas todos los metadatos. Estas correcciones hacen muchas llamadas adicionales a Google BigQuery.
+ Los tipos de datos binarios no son compatibles.
+ Debido a los límites de cuota y simultaneidad de Google BigQuery, el conector puede encontrar problemas con los límites de cuota de Google. Para evitar estos problemas, aplique tantas restricciones a Google BigQuery como sea posible. Para obtener información sobre cuotas de BigQuery, consulte [Cuotas y límites](https://cloud.google.com/bigquery/quotas) en la documentación de Google BigQuery.

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

Utilice los parámetros de esta sección para configurar el conector Google BigQuery.

### Conexiones de Glue (recomendado)
<a name="bigquery-gc"></a>

Recomendamos configurar un conector de Google BigQuery por medio de un objeto de conexiones de Glue. Para ello, establezca la variable de entorno `glue_connection` del conector Lambda de Google BigQuery con el nombre de la conexión 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 BIGQUERY
```

**Propiedades del entorno Lambda**

**glue\$1connection**: especifica el nombre de la conexión de Glue asociada al conector federado. 

**nota**  
Todos los conectores que utilizan conexiones de Glue deben utilizar AWS Secrets Manager para almacenar credenciales.
El conector de Google BigQuery creado por medio de conexiones de Glue no admite el uso de un controlador de multiplexación.
El conector de Google BigQuery creado por medio de conexiones de Glue solo es compatible con `ConnectionSchemaVersion` 2.

### Conexiones heredadas
<a name="bigquery-legacy"></a>

**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 sin una conexión de Glue asociada. Utilice los siguientes parámetros solo cuando [implemente de forma manual](connect-data-source-serverless-app-repo.md) una versión anterior de un conector de origen de datos de Athena o cuando no se especifique la propiedad de entorno de `glue_connection`.

**Propiedades del entorno Lambda**
+ **spill\$1bucket**: especifica el bucket de Amazon S3 para los datos que superen los límites de la función de Lambda.
+ **spill\$1prefix**: (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\$1put\$1request\$1headers**: (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\$1key\$1id**: (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\$1spill\$1encryption**: (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).
+ **gcp\$1project\$1id**: el ID del proyecto, no el nombre del proyecto, que contiene los conjuntos de datos de los que debe leer el conector (por ejemplo, `semiotic-primer-1234567`).
+ **secret\$1manager\$1gcp\$1creds\$1name**: el nombre del secreto de AWS Secrets Manager que contiene sus credenciales de BigQuery en formato JSON (por ejemplo, `GoogleCloudPlatformCredentials`).
+ **big\$1query\$1endpoint**: (opcional) la URL de un punto de conexión privado de BigQuery. Use este parámetro cuando desee acceder a BigQuery a través de un punto de conexión privado.

## Divisiones y vistas
<a name="connectors-bigquery-splits-and-views"></a>

Como el conector de BigQuery usa la API de lectura de almacenamiento de BigQuery para consultar tablas y la API de almacenamiento de BigQuery no admite vistas, el conector usa el cliente de BigQuery con una sola división de vistas.

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

Para consultar las tablas, el conector de BigQuery usa la API de lectura de almacenamiento de BigQuery, que utiliza un protocolo basado en RPC que proporciona un acceso rápido al almacenamiento administrado por BigQuery. Para obtener más información sobre la API de lectura de almacenamiento de BigQuery, consulte [Cómo usar la API de lectura de almacenamiento de BigQuery para leer datos de tablas](https://cloud.google.com/bigquery/docs/reference/storage) en la documentación de Google Cloud.

La selección de un subconjunto de columnas acelera significativamente el tiempo de ejecución de las consultas y reduce la cantidad de datos analizados. El conector está sujeto a errores de consulta a medida que aumenta la simultaneidad y, por lo general, es un conector lento.

El conector de Google BigQuery de Athena inserta predicados para reducir los datos analizados en la consulta. Las cláusulas `LIMIT`, las cláusulas `ORDER BY`, los predicados simples y las expresiones complejas se insertan en el conector para reducir la cantidad de datos analizados y disminuir el tiempo de ejecución de las consultas. 

### Cláusulas LIMIT
<a name="connectors-bigquery-performance-limit-clauses"></a>

Una instrucción `LIMIT N` reduce los datos analizados en la consulta. Con la inserción `LIMIT N`, el conector devuelve solo las filas `N` a Athena.

### Consultas N principales
<a name="connectors-bigquery-performance-top-n-queries"></a>

Una consulta `N` principal especifica el orden del conjunto de resultados y un límite en la cantidad de filas devueltas. Puede usar este tipo de consulta para determinar los valores `N` principales máximos o `N` principales mínimos de sus conjuntos de datos. Con la inserción `N` principal, el conector devuelve solo las filas `N` ordenadas a Athena.

### Predicados
<a name="connectors-bigquery-performance-predicates"></a>

Un predicado es una expresión de la cláusula `WHERE` de una consulta SQL que da como resultado un valor booleano y filtra las filas en función de varias condiciones. El conector de Google BigQuery de Athena puede combinar estas expresiones e insertarlas directamente en Google BigQuery para mejorar la funcionalidad y reducir la cantidad de datos analizados.

Los siguientes operadores del conector de Google BigQuery de Athena admiten la inserción de predicados:
+ **Booleano: **AND, OR, NOT.
+ **Igualdad: **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL.
+ **Aritmética: **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE.
+ **Otros: **LIKE\$1PATTERN, IN.

### Ejemplo de inserción combinada
<a name="connectors-bigquery-performance-pushdown-example"></a>

Para mejorar las capacidades de consulta, combine los tipos de inserciones, como en el siguiente ejemplo:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
ORDER BY col_a DESC 
LIMIT 10;
```

## Consultas de acceso directo
<a name="connectors-bigquery-passthrough-queries"></a>

El conector de Google BigQuery admite [consultas de acceso directo](federated-query-passthrough.md). Las consultas de acceso directo utilizan una función de tabla para enviar la consulta completa al origen de datos para su ejecución.

Para utilizar las consultas de acceso directo con Google BigQuery, puede usar la siguiente sintaxis:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

El siguiente ejemplo de consulta envía una consulta a un origen de datos de Google BigQuery. La consulta selecciona todas las columnas de la tabla `customer` y limita los resultados a 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

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

El proyecto del conector de Google BigQuery de Amazon Athena se licencia en virtud de la [Licencia Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

Al usar este conector, reconoce la inclusión de componentes de terceros, cuya lista se puede encontrar en el archivo [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-google-bigquery/pom.xml) para este conector y acepta los términos de las licencias de terceros correspondientes que se proporcionan en el archivo [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-google-bigquery/LICENSE.txt) de GitHub.com.

## Recursos adicionales
<a name="connectors-bigquery-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-google-bigquery) en GitHub.com.