Verbundabfragen ausführen - Amazon Athena

Verbundabfragen ausführen

Wenn Sie einen oder mehrere Daten-Connector konfiguriert und in Ihrem Konto bereitgestellt haben, können Sie diese in Ihren Athena-Abfragen verwenden.

Abfragen einer einzelnen Datenquelle

In den Beispielen in diesem Abschnitt wird davon ausgegangen, dass Sie den Amazon Athena CloudWatch Konnektor für Ihr Konto konfiguriert und bereitgestellt haben. Sie verwenden den gleichen Ansatz für Abfragen für andere Connectors.

So erstellen Sie eine Athena-Abfrage, die den CloudWatch-Connector verwendet
  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Erstellen Sie im Athena-Abfrage-Editor eine SQL-Abfrage mit der folgenden Syntax in der FROM-Klausel.

    MyCloudwatchCatalog.database_name.table_name

Beispiele

Im folgenden Beispiel wird der Athena-CloudWatch-Connector verwendet, um eine Verbindung mit der all_log_streams-Ansicht in der /var/ecommerce-engine/order-processor-CloudWatch-Logs-Protokollgruppe herzustellen. Die Ansicht all_log_streams ist eine Ansicht aller Protokollstreams in der Protokollgruppe. Die Beispielabfrage begrenzt die Anzahl der zurückgegebenen Zeilen auf 100.

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

Im folgenden Beispiel werden Informationen aus derselben Ansicht wie im vorherigen Beispiel analysiert. Im Beispiel werden die Bestell-ID und die Protokollebene extrahiert und alle Nachrichten mit der Ebene herausgefiltert 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'

Abfragen mehrerer Datenquellen

Stellen Sie sich als komplexeres Beispiel ein E-Commerce-Unternehmen vor, das die folgenden Datenquellen verwendet, um Daten zu Kundenkäufen zu speichern:

Stellen Sie sich vor, ein Datenanalyst für diese E-Commerce-Anwendung erfährt, dass die Versandzeit in einigen Regionen durch die lokalen Wetterbedingungen beeinflusst wurde. Der Analyst möchte wissen, wie viele Bestellungen verzögert sind, wo sich die betroffenen Kunden befinden und welche Produkte am stärksten betroffen sind. Anstatt die Informationsquellen separat zu untersuchen, verwendet der Analyst Athena, um die Daten in einer einzigen Verbundabfrage zusammenzuführen.

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

Verbundansichten abfragen

Bei der Abfrage von Verbundquellen können Sie Ansichten verwenden, um die zugrunde liegenden Datenquellen zu verschleiern oder komplexe Verknüpfungen vor anderen Analysten zu verbergen, die die Daten abfragen.

Überlegungen und Einschränkungen

  • Für Verbundansichten ist Athena-Engine-Version 3 erforderlich.

  • Verbundene Ansichten werden in AWS Glue und nicht mit der zugrunde liegenden Datenquelle gespeichert.

  • Verbund-Ansichten werden für Datenquellen, die als Glue-Datenkatalog registriert sind, nicht unterstützt.

  • Ansichten, die mit Verbundkatalogen erstellt wurden, müssen die Syntax voll qualifizierter Namen verwenden, wie im folgenden Beispiel:

    "ddbcatalog"."default"."customers"
  • Benutzer, die Abfragen an Verbundquellen ausführen, müssen über die Berechtigung verfügen, die Verbundquellen abzufragen.

  • Die athena:GetDataCatalog-Berechtigung ist für Verbundansichten erforderlich. Weitere Informationen finden Sie unter Zugriff auf Athena Federated Query zulassen: Beispiel-Richtlinien .

Beispiele

Im folgenden Beispiel wird eine Ansicht mit dem Namen customers auf Daten erstellt, die in einer Verbunddatenquelle gespeichert sind.

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

Die folgende Beispielabfrage zeigt eine Abfrage, die auf die customers-Ansicht statt auf die zugrunde liegende Verbunddatenquelle verweist.

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

Das folgende Beispiel erstellt eine Ansicht namens order_summary, die Daten aus einer Verbunddatenquelle und aus einer Amazon-S3-Datenquelle kombiniert. Aus der Verbundquelle, die bereits in Athena erstellt wurde, verwendet die Ansicht die Tabellen person und profile. In Amazon S3 verwendet die Ansicht die purchase- und payment-Tabellen. Um auf Amazon S3 zu verweisen, verwendet die Anweisung das Schlüsselwort awsdatacatalog. Beachten Sie, dass die föderierte Datenquelle die vollqualifizierte Namenssyntax federated_source_name verwendet. 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

Weitere Ressourcen