Usar consultas federadas - Amazon Athena

Usar consultas federadas

Depois de configurar um ou mais conectores de dados e implantá-los em sua conta, você poderá usá-los nas consultas do Athena.

Consultar uma única fonte de dados

Os exemplos nesta seção pressupõem que você tenha configurado e implantado Conector do Amazon Athena para o CloudWatch em sua conta. Use a mesma abordagem para consultar quando usar outros conectores.

Para criar uma consulta do Athena que usa o conector do CloudWatch
  1. Abra o console do Athena em https://console.aws.amazon.com/athena/.

  2. No editor de consultas do Athena, crie uma consulta SQL que use a sintaxe a seguir na cláusula FROM.

    MyCloudwatchCatalog.database_name.table_name

Exemplos

O exemplo a seguir usa o conector do CloudWatch no Athena para se conectar à visualização all_log_streams no grupo de logs /var/ecommerce-engine/order-processor do CloudWatch Logs. A visualização all_log_streams é uma visualização de todos os fluxos de log no grupo de logs. A consulta de exemplo limita o número de linhas retornadas a 100.

SELECT * FROM "MyCloudwatchCatalog"."/var/ecommerce-engine/order-processor".all_log_streams LIMIT 100;

O exemplo a seguir analisa informações da mesma visualização que o exemplo anterior. O exemplo extrai o ID da ordem e o nível de log e filtra qualquer mensagem que tenha o nível INFO.

SELECT log_stream as ec2_instance, Regexp_extract(message '.*orderId=(\d+) .*', 1) AS orderId, message AS order_processor_log, Regexp_extract(message, '(.*):.*', 1) AS log_level FROM MyCloudwatchCatalog."/var/ecommerce-engine/order-processor".all_log_streams WHERE Regexp_extract(message, '(.*):.*', 1) != 'INFO'

Consultar várias fontes de dados

Usando um exemplo mais complexo, imagine uma empresa de comércio eletrônico que usa as seguintes fontes de dados para armazenar dados relacionados às compras dos clientes:

Imagine que um analista de dados dessa aplicação de comércio eletrônico saiba que o tempo de entrega em algumas regiões foi afetado pelas condições climáticas locais. O analista quer saber quantos pedidos estão atrasados, onde os clientes afetados estão localizados e quais foram os produtos mais afetados. Em vez de investigar as fontes de informação separadamente, o analista usa o Athena para unir dados em uma única consulta federada.

SELECT t2.product_name AS product, t2.product_category AS category, t3.customer_region AS region, count(t1.order_id) AS impacted_orders FROM my_dynamodb.default.orders t1 JOIN my_mysql.products.catalog t2 ON t1.product_id = t2.product_id JOIN my_documentdb.default.customers t3 ON t1.customer_id = t3.customer_id WHERE t1.order_status = 'PENDING' AND t1.order_date between '2022-01-01' AND '2022-01-05' GROUP BY 1, 2, 3 ORDER BY 4 DESC

Consultar visualizações federadas

Ao consultar fontes federadas, é possível usar visualizações para ofuscar as fontes de dados subjacentes ou ocultar uniões complexas de outros analistas que consultam os dados.

Considerações e limitações

  • As visualizações federadas necessitam do mecanismo Athena versão 3.

  • As visualizações federadas são armazenadas no AWS Glue, não na fonte de dados subjacente.

  • As visualizações criadas com catálogos federados devem usar uma sintaxe de nome totalmente qualificada, como no seguinte exemplo:

    "ddbcatalog"."default"."customers"
  • Os usuários que executam consultas em fontes federadas devem ter permissão para consultar fontes federadas.

  • A permissão athena:GetDataCatalog é necessária para visualizações federadas. Para ter mais informações, consulte Permitir acesso a consultas federadas do Athena: exemplos de política .

Exemplos

O exemplo a seguir cria uma visualização denominada customers nos dados armazenados em uma fonte de dados federada.

CREATE VIEW customers AS SELECT * FROM my_federated_source.default.table

O exemplo de consulta a seguir mostra uma consulta que faz referência à visualização customers em vez da fonte de dados federada subjacente.

SELECT id, SUM(order_amount) FROM customers GROUP by 1 ORDER by 2 DESC LIMIT 50

O exemplo a seguir cria uma visualização denominada order_summary que combina dados de uma fonte de dados federada e de uma fonte de dados do Amazon S3. Da fonte federada, que já foi criada no Athena, a visualização usa as tabelas person e profile. No Amazon S3, a visualização usa as tabelas purchase e payment. Para se referir ao Amazon S3, a instrução usa a palavra-chave awsdatacatalog. A fonte de dados federada usa a sintaxe de nome totalmente qualificada federated_source_name.federated_source_database.federated_source_table.

CREATE VIEW default.order_summary AS SELECT * FROM federated_source_name.federated_source_database."person" p JOIN federated_source_name.federated_source_database."profile" pr ON pr.id = p.id JOIN awsdatacatalog.default.purchase i ON p.id = i.id JOIN awsdatacatalog.default.payment pay ON pay.id = p.id

Recursos adicionais