Esecuzione di query passthrough 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à.

Esecuzione di query 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 interrogazioni 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 query Pass Through restituiscono una tabella che è possibile analizzare utilizzando Athena SQL.

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 query passthrough devono essere eseguite nel contesto del catalogo della query esterna (ovvero la query che chiama la funzione di tabella).

  • Le prestazioni delle query possono variare a seconda della configurazione dell'origine dati.

  • Le query passthrough non sono supportate per le visualizzazioni.

Sintassi

La sintassi generale della query passthrough di Athena è la seguente.

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

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(system.query(query => 'query string'))

Per semplicità, è possibile omettere l'argomento denominato opzionale query e l'operatore => freccia.

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 arg1 => 'arg1Value' contiene il primo argomento e il relativo valore. Il nome arg1 è specifico dell'origine dati e può differire da connettore a connettore.

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

Per informazioni sulla sintassi esatta da utilizzare con un particolare connettore, consulta la pagina dei 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( 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( system.query( 'SELECT * FROM customer LIMIT 10;' ))