

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

O conector do Amazon Athena para o Google [BigQuery](https://cloud.google.com/bigquery/) permite que o Amazon Athena execute consultas SQL em seus dados do Google BigQuery.

Esse conector pode ser registrado como um catálogo federado no Glue Data Catalog. Ele é compatível com controles de acesso a dados definidos no Lake Formation nos níveis de catálogo, banco de dados, tabela, coluna, linha e tag. Esse conector usa o Glue Connections para centralizar as propriedades de configuração no Glue.

## Pré-requisitos
<a name="connectors-bigquery-prerequisites"></a>
+ Implante o conector na sua Conta da AWS usando o console do Athena ou o AWS Serverless Application Repository. Para ter mais informações, consulte [Criar uma conexão de fonte de dados](connect-to-a-data-source.md) ou [Usar o AWS Serverless Application Repository para implantar um conector de fonte de dados](connect-data-source-serverless-app-repo.md).

## Limitações
<a name="connectors-bigquery-limitations"></a>
+ As funções do Lambda têm um valor máximo de tempo limite de 15 minutos. Cada divisão executa uma consulta no BigQuery e precisa terminar com tempo suficiente para armazenar os resultados para que o Athena leia. Se a função do Lambda atingir o tempo limite, a consulta falhará.
+ O Google BigQuery diferencia maiúsculas e minúsculas. O conector tenta corrigir a capitalização dos nomes dos conjuntos de dados, dos nomes das tabelas e dos ID de projetos. Isso é necessário porque o Athena coloca em minúsculas todos os metadados. Essas correções geram muitas chamadas extras para o Google BigQuery.
+ Não há suporte para o tipo de dado binário.
+ Devido à simultaneidade e aos limites de cota do Google BigQuery, o conector pode encontrar problemas de limite de cota do Google. Para evitar esses problemas, imponha o máximo possível de restrições ao Google BigQuery. Para obter informações sobre cotas do BigQuery, consulte [Cotas e limites](https://cloud.google.com/bigquery/quotas) na documentação do Google BigQuery.

## Parâmetros
<a name="connectors-bigquery-parameters"></a>

Use os parâmetros nesta seção para configurar o conector do Google BigQuery.

### Conectores federados do AWS Glue Data Catalog
<a name="bigquery-gc"></a>

Recomendamos que você configure um conector do Google BigQuery usando um objeto de conexões do Glue. Para fazer isso, defina a variável de ambiente `glue_connection` da função do Lambda para o conector do Google BigQuery com o nome da conexão do Glue que deseja usar.

**Propriedades das conexões do Glue**

Use o comando apresentado a seguir para obter o esquema de um objeto de conexão do Glue. Esse esquema contém todos os parâmetros que você pode usar para controlar a conexão.

```
aws glue describe-connection-type --connection-type BIGQUERY
```

**Propriedades do ambiente do Lambda**

As propriedades do ambiente do Lambda a seguir se aplicam somente quando você usa o conector com uma função do Lambda em sua conta.

**glue\_connection**: especifica o nome da conexão do Glue associada ao conector federado. 

**nota**  
Todos os conectores que usam a conexão federada do AWS Glue Data Catalog devem usar o AWS Secrets Manager para armazenar as credenciais.
O conector para Google BigQuery criado por meio de uma conexão federada do AWS Glue Data Catalog não é compatível com o uso de um manipulador de multiplexação.
O conector para Google BigQuery criado por meio de uma conexão federada do AWS Glue Data Catalog é compatível apenas com `ConnectionSchemaVersion` 2.

### Conectores federados do catálogo de dados do Athena
<a name="bigquery-legacy"></a>

**nota**  
Os conectores de fonte de dados do Athena criados a partir de 3 de dezembro de 2024 usam conexões do AWS Glue.

Os nomes dos parâmetros e suas definições listados abaixo referem-se a conectores de fonte de dados do Athena criados sem uma conexão do Glue associada. Os parâmetros apresentados abaixo devem ser usados somente quando você [implantar manualmente](connect-data-source-serverless-app-repo.md) uma versão anterior de um conector de fonte de dados do Athena ou quando a propriedade de ambiente `glue_connection` não for especificada.

**Propriedades do ambiente do Lambda**
+ **spill\_bucket**: especifica o bucket do Amazon S3 para dados que excedem os limites da função do Lambda.
+ **spill\_prefix**: (opcional) assume como padrão uma subpasta no `spill_bucket` especificado chamado `athena-federation-spill`. Recomendamos que você configure um [ciclo de vida de armazenamento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) do Amazon S3 neste local para excluir derramamentos anteriores a um número predeterminado de dias ou horas.
+ **spill\_put\_request\_headers**: (opcional) um mapa codificado em JSON de cabeçalhos e valores de solicitações para a solicitação `putObject` do Amazon S3 usada para o derramamento (por exemplo, `{"x-amz-server-side-encryption" : "AES256"}`). Para outros cabeçalhos possíveis, consulte [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) na *Referência da API do Amazon Simple Storage Service*.
+ **kms\_key\_id**: (opcional) por padrão, todos os dados transmitidos para o Amazon S3 são criptografados usando o modo de criptografia autenticado AES-GCM e uma chave gerada aleatoriamente. Para que sua função do Lambda use chaves de criptografia mais fortes geradas pelo KMS, como `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, é possível especificar um ID de chave do KMS.
+ **disable\_spill\_encryption**: (opcional) quando definido como `True`, desativa a criptografia do derramamento. É padronizado como `False`, para que os dados transmitidos para o S3 sejam criptografados usando o AES-GCM — usando uma chave gerada aleatoriamente ou o KMS para gerar chaves. Desativar a criptografia do derramamento pode melhorar o desempenho, especialmente se o local do derramamento usar [criptografia no lado do servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **gcp\_project\_id**: o ID do projeto (não o nome do projeto) que contém os conjuntos de dados que o conector deve ler (por exemplo, `semiotic-primer-1234567`).
+ **secret\_manager\_gcp\_creds\_name**: o nome do segredo no AWS Secrets Manager que contém suas credenciais do BigQuery no formato JSON (por exemplo, `GoogleCloudPlatformCredentials`).
+ **big\_query\_endpoint**: (opcional) o URL de um endpoint privado do BigQuery. Use esse parâmetro quando quiser acessar o BigQuery por meio de um endpoint privado.

## Divisões e exibições
<a name="connectors-bigquery-splits-and-views"></a>

Como o conector BigQuery usa a API Storage Read do BigQuery para consultar tabelas, e a API Storage do BigQuery não é compatível com exibições, o conector usa o cliente do BigQuery com uma única divisão para exibições.

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

Para consultar tabelas, o conector BigQuery usa a API Storage Read do BigQuery, que usa um protocolo baseado em RPC que fornece acesso rápido ao armazenamento gerenciado do BigQuery. Para obter mais informações sobre a API BigQuery Storage Read, consulte [Use the BigQuery Storage Read API to read table data](https://cloud.google.com/bigquery/docs/reference/storage) na documentação do Google Cloud.

A seleção de um subconjunto de colunas acelera o runtime da consulta e reduz os dados verificados de forma significativa. O conector está sujeito a falhas de consulta à medida que a simultaneidade aumenta e, de forma geral, é um conector lento.

O conector do Athena para o Google BigQuery executa a passagem direta de predicados para diminuir os dados examinados pela consulta. Cláusulas `LIMIT`, cláusulas `ORDER BY`, predicados simples e expressões complexas são passados diretamente ao conector para reduzir a quantidade de dados examinados e o runtime de execução da consulta. 

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

Uma instrução `LIMIT N` reduz os dados examinados pela consulta. Com a passagem direta de `LIMIT N`, o conector só retorna `N` linhas para o Athena.

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

Uma das `N` principais consultas especifica uma ordenação do conjunto de resultados e um limite no número de linhas retornadas. Você pode usar esse tipo de consulta para determinar os `N` principais valores máximos ou `N` principais valores mínimos para os conjuntos de dados. Com os `N` pushdown principais, o conector só retorna `N` linhas para o Athena.

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

Um predicado é uma expressão na cláusula `WHERE` de uma consulta SQL, que avalia para um valor booleano e filtra as linhas com base em várias condições. O conector do Athena para o Google BigQuery pode combinar essas expressões e passá-las diretamente ao Google BigQuery para melhorar a funcionalidade e reduzir a quantidade de dados examinados.

Os seguintes operadores do conector do Athena para o Google BigQuery são compatíveis com a passagem direta de predicados:
+ **Booleanos:** E, OU, NÃO
+ **Igualdade: **EQUAL, NOT\_EQUAL, LESS\_THAN, LESS\_THAN\_OR\_EQUAL, GREATER\_THAN, GREATER\_THAN\_OR\_EQUAL, IS\_DISTINCT\_FROM, NULL\_IF, IS\_NULL
+ **Aritméticos:** ADICIONAR, SUBTRAIR, MULTIPLICAR, DIVIDIR, MÓDULO, NEGAR
+ **Outros:**LIKE\_PATTERN, IN

### Exemplo de passagem direta combinada
<a name="connectors-bigquery-performance-pushdown-example"></a>

Para ter recursos aprimorados de consulta, combine os tipos de passagem direta, como no seguinte exemplo:

```
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 passagem
<a name="connectors-bigquery-passthrough-queries"></a>

O conector Google BigQuery é compatível com [consultas de passagem](federated-query-passthrough.md). As consultas de passagem usam uma função de tabela para enviar sua consulta completa para execução na fonte de dados.

Para usar consultas de passagem com o Google BigQuery, você pode empregar a seguinte sintaxe:

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

O exemplo de consulta a seguir envia uma consulta para uma fonte de dados no Google BigQuery. A consulta seleciona todas as colunas na tabela `customer`, limitando os resultados a 10.

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

## Informações de licença
<a name="connectors-bigquery-license-information"></a>

O projeto do conector Google BigQuery do Amazon Athena é licenciado sob a [Licença Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

Ao usar esse conector, você reconhece a inclusão de componentes de terceiros, cuja lista pode ser encontrada no arquivo [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-google-bigquery/pom.xml) desse conector, e concorda com os termos das respectivas licenças de terceiros fornecidas no arquivo [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-google-bigquery/LICENSE.txt) em GitHub.com.

## Recursos adicionais
<a name="connectors-bigquery-additional-resources"></a>

Para obter mais informações sobre esse conector, visite [o site correspondente](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-google-bigquery) em GitHub.com.