Ausführen von föderierten Passthrough-Abfragen - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Ausführen von föderierten Passthrough-Abfragen

In Athena können Sie Abfragen für föderierte Datenquellen mithilfe der Abfragesprache der Datenquelle selbst ausführen und die vollständige Abfrage zur Ausführung an die Datenquelle weiterleiten. Diese Abfragen werden als Passthrough-Abfragen bezeichnet. Um Passthrough-Abfragen auszuführen, verwenden Sie eine Tabellenfunktion in Ihrer Athena-Abfrage. Sie schließen die Passthrough-Abfrage, die für die Datenquelle ausgeführt werden soll, in eines der Argumente der Tabellenfunktion ein. Pass-Through-Abfragen geben eine Tabelle zurück, die Sie mit Athena SQL analysieren können.

Unterstützte Konnektoren

Die folgenden Athena-Datenquellenconnectors unterstützen Passthrough-Abfragen.

Überlegungen und Einschränkungen

Beachten Sie bei der Verwendung von Passthrough-Abfragen in Athena die folgenden Punkte:

  • Query-Passthrough wird nur für SELECT Athena-Anweisungen oder Lesevorgänge unterstützt.

  • Passthrough-Abfragen müssen im Kontext des Katalogs der äußeren Abfrage (d. h. der Abfrage, die die Tabellenfunktion aufruft) ausgeführt werden.

  • Die Abfrageleistung kann je nach Konfiguration der Datenquelle variieren.

  • Passthrough-Abfragen werden für Ansichten nicht unterstützt.

Syntax

Die allgemeine Passthrough-Syntax für Athena-Abfragen lautet wie folgt.

SELECT * FROM TABLE(system.function_name(arg1 => 'arg1Value'[, arg2 => 'arg2Value', ...]))

Bei den meisten Datenquellen query folgen auf das erste und einzige Argument der Pfeiloperator => und die Abfragezeichenfolge.

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

Der Einfachheit halber können Sie das optionale benannte Argument query und den Pfeiloperator => weglassen.

SELECT * FROM TABLE(system.query('query string'))

Wenn die Datenquelle mehr als die Abfragezeichenfolge benötigt, verwenden Sie benannte Argumente in der Reihenfolge, die von der Datenquelle erwartet wird. Der Ausdruck arg1 => 'arg1Value' enthält beispielsweise das erste Argument und seinen Wert. Der Name arg1 ist spezifisch für die Datenquelle und kann sich von Konnektor zu Konnektor unterscheiden.

SELECT * FROM TABLE( system.query( arg1 => 'arg1Value', arg2 => 'arg2Value', arg3 => 'arg3Value' ));

Informationen zur genauen Syntax, die mit einem bestimmten Konnektor verwendet werden soll, finden Sie auf der Seite mit den einzelnen Konnektoren.

Verwendung von Anführungszeichen

Argumentwerte, einschließlich der von Ihnen übergebenen Abfragezeichenfolge, müssen in einfache Anführungszeichen eingeschlossen werden, wie im folgenden Beispiel.

SELECT * FROM TABLE(system.query(query => 'SELECT * FROM testdb.persons LIMIT 10'))

Wenn die Abfragezeichenfolge von doppelten Anführungszeichen umgeben ist, schlägt die Abfrage fehl. Die folgende Abfrage schlägt mit der Fehlermeldung COLUMN_NOT_FOUND fehl: Zeile 1:43: Die Spalte 'select * from testdb.persons limit 10' kann nicht aufgelöst werden.

SELECT * FROM TABLE(system.query(query => "SELECT * FROM testdb.persons LIMIT 10"))

Um ein einfaches Anführungszeichen zu umgehen, fügen Sie dem Original ein einfaches Anführungszeichen hinzu (z. B. to). terry's_group terry''s_group

Beispiele

Mit der folgenden Beispielabfrage wird eine Abfrage an eine Datenquelle weitergeleitet. Die Abfrage wählt alle Spalten in der customer Tabelle aus, wodurch die Ergebnisse auf 10 begrenzt werden.

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

Die folgende Anweisung führt dieselbe Abfrage aus, entfernt jedoch das optionale benannte Argument query und den Pfeiloperator=>.

SELECT * FROM TABLE( system.query( 'SELECT * FROM customer LIMIT 10;' ))