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 passthrough federate
In Athena, puoi eseguire query su origini dati federate utilizzando il linguaggio di query dell'origine dati stessa e inviare l'intera query all'origine dati per l'esecuzione. Queste interrogazioni sono chiamate interrogazioni passthrough. Per eseguire query passthrough, si utilizza una funzione di tabella nella query Athena. Includi la query passthrough da eseguire sull'origine dati in uno degli argomenti della funzione di tabella. Le interrogazioni passanti restituiscono una tabella che è possibile analizzare utilizzando AthenaSQL.
Connettori supportati
I seguenti connettori di origine dati Athena supportano le query passthrough.
Considerazioni e limitazioni
Quando utilizzate le interrogazioni passthrough in Athena, tenete presente i seguenti punti:
-
Il passthrough delle query è supportato solo per le istruzioni
SELECT
Athena o le operazioni di lettura. -
Le prestazioni delle query possono variare a seconda della configurazione dell'origine dati.
Sintassi
La sintassi generale della query passthrough di Athena è la seguente.
SELECT * FROM TABLE(catalog.system.
function_name
(arg1
=> 'arg1Value
'[,arg2
=> 'arg2Value
', ...]))
Tieni presente quanto segue:
-
catalog: il nome del connettore federato Athena di destinazione o il nome del catalogo dati.
-
system — Lo spazio dei nomi che contiene la funzione. Tutte le implementazioni del connettore Athena utilizzano questo spazio dei nomi.
-
function_name — Il nome della funzione che invia la query passthrough all'origine dati. Viene spesso chiamato.
query
La combinazionecatalog.system.function_name
è il percorso a piena risoluzione per la funzione. -
arg1, arg2 e così via: argomenti della funzione. L'utente deve passarli alla funzione. Nella maggior parte dei casi, questa è la stringa di query che viene trasmessa all'origine dati.
Per la maggior parte delle fonti di dati, il primo e unico argomento è query
seguito dall'operatore freccia =>
e dalla stringa di query.
SELECT * FROM TABLE(catalog.system.query(query => 'query string'))
Per semplicità, è possibile omettere l'argomento denominato opzionale query
e l'operatore =>
freccia.
SELECT * FROM TABLE(catalog.system.query('query string'))
È possibile semplificare ulteriormente l'interrogazione rimuovendo il catalog
nome se la query viene eseguita nel contesto del catalogo di destinazione.
SELECT * FROM TABLE(system.query('query string'))
Se l'origine dati richiede più della stringa di query, utilizzate argomenti denominati nell'ordine previsto dall'origine dati. Ad esempio, l'espressione
contiene il primo argomento e il relativo valore. Il nome arg1
=>
'arg1Value
'arg1
è specifico dell'origine dati e può differire da connettore a connettore.
SELECT * FROM TABLE( system.query(
arg1
=> 'arg1Value
',arg2
=> 'arg2Value
',arg3
=> 'arg3Value
' ));
Quanto sopra può essere semplificato anche omettendo i nomi degli argomenti. Tuttavia, è necessario seguire l'ordine della firma del metodo. Consultate la documentazione di ciascun connettore per ulteriori informazioni sulla firma della funzione.
SELECT * FROM TABLE(catalog.system.query('arg1Value', 'arg2Value', 'arg3Value'))
È possibile eseguire più query passthrough su diversi connettori Athena utilizzando il percorso completo di risoluzione delle funzioni, come nell'esempio seguente.
SELECT c_customer_sk FROM TABLE (postgresql.system.query('select * from customer limit 10')) UNION SELECT c_customer_sk FROM TABLE(dynamodb.system.query('select * from customer')) LIMIT 10
È possibile utilizzare le query passthrough come parte di una vista federata. Si applicano le stesse limitazioni. Per ulteriori informazioni, consulta Interrogare le viste federate.
CREATE VIEW catalog.database.ViewName AS SELECT * FROM TABLE ( catalog.system.query('query') )
Per informazioni sulla sintassi esatta da utilizzare con un particolare connettore, consultate la documentazione relativa ai singoli connettori.
Utilizzo delle virgolette
I valori degli argomenti, inclusa la stringa di query passata, devono essere racchiusi tra virgolette singole, come nell'esempio seguente.
SELECT * FROM TABLE(system.query(query => 'SELECT * FROM testdb.persons LIMIT 10'))
Quando la stringa di query è racchiusa tra virgolette doppie, la query ha esito negativo. La seguente query ha esito negativo e restituisce il messaggio di errore COLUMN_ NOT _FOUND: riga 1:43: La colonna 'select * from testdb.persons limit
10' non può essere risolta.
SELECT * FROM TABLE(system.query(query => "SELECT * FROM testdb.persons LIMIT 10"))
Per evitare una singola virgoletta, aggiungi una singola citazione all'originale (ad esempio, a). terry's_group
terry''s_group
Esempi
La seguente query di esempio invia una query a una fonte di dati. La query seleziona tutte le colonne della customer
tabella, limitando i risultati a 10.
SELECT * FROM TABLE( catalog.system.query( query => 'SELECT * FROM customer LIMIT 10;' ))
L'istruzione seguente esegue la stessa query, ma elimina l'argomento denominato opzionale query
e l'operatore freccia. =>
SELECT * FROM TABLE( catalog.system.query( 'SELECT * FROM customer LIMIT 10;' ))
Questo può anche essere incapsulato in una vista federata per facilitarne il riutilizzo. Se utilizzato con una vista, è necessario utilizzare il percorso completo di risoluzione della funzione.
CREATE VIEW AwsDataCatalog.default.example_view AS SELECT * FROM TABLE ( catalog.system.query('SELECT * FROM customer LIMIT 10;') )
Disattiva la funzione Query Passthrough
Per disabilitare le query passthrough, aggiungi una variabile di ambiente Lambda denominata enable_query_passthrough
e impostala su. false