Ejecución de consultas federadas
Una vez que haya configurado uno o más conectores de datos y los haya implementado en su cuenta, podrá usarlos en sus consultas de Athena.
Consulta de un único origen de datos
En los ejemplos de esta sección se presupone que ha configurado e implementado los Conector CloudWatch de Amazon Athena en su cuenta. Utilice el mismo enfoque para realizar consultas cuando utilice otros conectores.
Para crear una consulta de Athena que utilice el conector CloudWatch
Abra la consola de Athena en https://console.aws.amazon.com/athena/
. -
En el editor de consultas de Athena, cree una consulta SQL que utilice la siguiente sintaxis en la cláusula
FROM
.MyCloudwatchCatalog
.database_name
.table_name
Ejemplos
En el siguiente ejemplo, se utiliza el conector Athena CloudWatch para conectarse a la vista all_log_streams
en el Grupo de registros de CloudWatch Logs /var/ecommerce-engine/order-processor
. La vista all_log_streams
es una vista de todas las secuencias de registro del grupo de registros. La consulta de ejemplo limita el número de filas devueltas a 100.
SELECT * FROM "MyCloudwatchCatalog"."/var/ecommerce-engine/order-processor".all_log_streams LIMIT 100;
En el siguiente ejemplo se analiza la información de la misma vista que el ejemplo anterior. En el ejemplo se extrae el ID de pedido y el nivel de registro y se filtra cualquier mensaje que tenga el nivel 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'
Consulta de varios orígenes de datos
Como ejemplo más complejo, imagine una empresa de comercio electrónico que utiliza los siguientes orígenes de datos para almacenar datos relacionados con las compras de los clientes:
-
Amazon RDS para MySQL
para almacenar los datos del catálogo de productos. -
Amazon DocumentDB
para almacenar datos de las cuenta de los cliente, como direcciones de correo electrónico y direcciones de envío. -
Amazon DynamoDB
para almacenar datos de seguimiento y envío de pedidos.
Imagine que un analista de datos de esta aplicación de comercio electrónico descubre que el tiempo de envío en algunas regiones se ha visto afectado por las condiciones meteorológicas locales. El analista quiere saber cuántos pedidos están atrasados, dónde se encuentran los clientes afectados y qué productos están más comprometidos. En lugar de investigar las fuentes de información por separado, el analista utiliza Athena para unir los datos en una ú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
Consulta de vistas federadas
Al consultar orígenes federados, puede utilizar las vistas para ocultar los orígenes de datos subyacentes u ocultar las combinaciones complejas a otros analistas que consulten los datos.
Consideraciones y limitaciones
-
Las vistas federadas requieren la versión 3 del motor de Athena.
-
Las vistas federadas se almacenan en el AWS Glue, no con el origen de datos subyacente.
-
Las vistas creadas con catálogos federados deben utilizar una sintaxis de nombres calificada completa, como en el siguiente ejemplo:
"ddbcatalog"."default"."customers"
-
Los usuarios que realicen consultas en orígenes federados deben tener permiso para consultar los orígenes federados.
-
El permiso
athena:GetDataCatalog
es obligatorio para las vistas federadas. Para obtener más información, consulte Ejemplos de políticas de permisos de IAM para permitir la consulta federada de Athena.
Ejemplos
En el siguiente ejemplo, se crea una vista denominada customers
en los datos almacenados en un origen de datos federado.
CREATE VIEW customers AS SELECT * FROM my_federated_source.default.table
En el siguiente ejemplo de consulta, se muestra una consulta que hace referencia a la vista customers
en lugar de al origen de datos federado subyacente.
SELECT id, SUM(order_amount) FROM customers GROUP by 1 ORDER by 2 DESC LIMIT 50
En el siguiente ejemplo, se crea una vista denominada order_summary
que combina datos de un origen de datos federado y de un origen de datos de Amazon S3. Desde el origen federado, que ya se creó en Athena, la vista usa las tablas person
y profile
. Desde Amazon S3, la vista usa las tablas purchase
y payment
. Para hacer referencia a Amazon S3, la instrucción utiliza la palabra clave awsdatacatalog
. Tenga en cuenta que el origen de datos federado utiliza la sintaxis de nombres calificada completa 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 JOINfederated_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 adicionales de
-
Para ver un ejemplo de una vista federada que está desacoplada de su fuente de origen y que se encuentra disponible para su análisis bajo demanda en un modelo multiusuario, consulte Amplíe la malla de datos con Amazon Athena y las vistas federadas
en el Blog sobre macrodatos de AWS. -
Para obtener más información sobre cómo trabajar con vistas en Athena, consulte Uso de vistas.