Usa interrogazioni federate - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa interrogazioni federate

Dopo aver configurato uno o più connettori dati e averli distribuiti nell'account, puoi utilizzarli nelle query Athena.

Esegui una query su un'unica fonte di dati

Negli esempi di questa sezione si presuppone che Connettore Amazon Athena CloudWatch sia stato configurato e distribuito nel tuo account. Utilizza lo stesso approccio per eseguire query quando utilizzi altri connettori.

Per creare una query Athena che utilizza il connettore CloudWatch
  1. Apri la console Athena all'indirizzo https://console.aws.amazon.com/athena/.

  2. Nell'editor di query Athena, create una SQL query che utilizzi la seguente sintassi nella clausola. FROM

    MyCloudwatchCatalog.database_name.table_name

Esempi

L'esempio seguente utilizza il CloudWatch connettore Athena per connettersi alla all_log_streams vista nel gruppo /var/ecommerce-engine/order-processor CloudWatch Logs Log. La visualizzazione all_log_streams è una visualizzazione di tutti i flussi di log nel gruppo di log. La query di esempio limita il numero di righe restituite a 100.

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

Nell'esempio seguente vengono analizzate le informazioni della stessa visualizzazione dell'esempio precedente. Nell'esempio vengono estratti l'ID ordine e il livello di log e filtrati tutti i messaggi che dispongono del livello 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'

Interroga più fonti di dati

Come esempio più complesso, immagina un'azienda di e-commerce che utilizza le seguenti fonti di dati per archiviare i dati relativi agli acquisti dei clienti:

Immagina che un analista di dati per questa applicazione di e-commerce scopra che i tempi di spedizione in alcune regioni sono stati influenzati dalle condizioni meteorologiche locali. L'analista desidera sapere quanti ordini subiscono ritardi, dove si trovano i clienti interessati e quali prodotti sono maggiormente interessati. Invece di esaminare separatamente le fonti di informazioni, l'analista utilizza Athena per unire i dati in un'unica query federata.

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

Interroga le viste federate

Quando si interrogano fonti federate, è possibile utilizzare le viste per offuscare le fonti di dati sottostanti o nascondere join complessi ad altri analisti che eseguono query sui dati.

Considerazioni e limitazioni

  • Le viste federate richiedono la versione 3 del motore Athena.

  • Le viste federate vengono archiviate nella AWS Glue sorgente dati sottostante, non con essa.

  • Le viste create con cataloghi federati devono utilizzare una sintassi dei nomi completa, come nell'esempio seguente:

    "ddbcatalog"."default"."customers"
  • Gli utenti che eseguono query su fonti federate devono disporre dell'autorizzazione per poterle eseguire.

  • L'autorizzazione athena:GetDataCatalog è richiesta per le visualizzazioni federate. Per ulteriori informazioni, consulta Esempio di policy di autorizzazione IAM per consentire la query federata Athena.

Esempi

L'esempio seguente crea una visualizzazione chiamata customers sui dati archiviati in un'origine dati federata.

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

La seguente query di esempio mostra una query che fa riferimento alla visualizzazione customers anziché all'origine dati federata sottostante.

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

L'esempio seguente crea una visualizzazione chiamata order_summary che combina i dati provenienti da un'origine dati federata e da un'origine dati Amazon S3. Dall'origine federata, che è già stata creata in Athena, la visualizzazione utilizza person e le tabelle profile. Da Amazon S3, la visualizzazione utilizza le tabelle purchase e payment. Per fare riferimento ad Amazon S3, l'istruzione utilizza la parola chiave awsdatacatalog. Tieni presente che l'origine dati federata utilizza la sintassi dei nomi 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 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

Risorse aggiuntive