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
enthält beispielsweise das erste Argument und seinen Wert. Der Name arg1
=>
'arg1Value
'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;' ))