Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Uso de consultas de acceso directo federadas

Modo de enfoque
Uso de consultas de acceso directo federadas - Amazon Athena

En Athena, puede ejecutar consultas en orígenes de datos federados utilizando el lenguaje de consulta del propio origen de datos y enviar la consulta completa al origen de datos para su ejecución. Estas consultas se denominan consultas de acceso directo. Para ejecutar consultas de acceso directo, utilice una función de tabla en la consulta de Athena. Incluya la consulta de acceso directo que se ejecutará en el origen de datos en uno de los argumentos de la función de tabla. Las consultas de acceso directo devuelven una tabla que puede analizar con Athena SQL.

Conectores admitidos

Los siguientes conectores de orígenes de datos de Athena admiten consultas de acceso directo.

Consideraciones y limitaciones

Cuando utilice las consultas de acceso directo en Athena, tenga en cuenta los siguientes puntos:

  • El acceso directo de consultas solo se admite para las instrucciones de SELECT u operaciones de lectura de Athena.

  • El rendimiento de las consultas puede variar en función de la configuración del origen de datos.

  • El acceso directo de consultas no es compatible con el control de acceso detallado de Lake Formation.

  • Las consultas de acceso directo no son compatibles con los orígenes de datos registrados como catálogos de datos de Glue.

Sintaxis

La sintaxis general del acceso directo de las consultas de Athena es la siguiente.

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

Tenga en cuenta lo siguiente:

  • catálogo: el nombre del conector federado de Athena de destino o el nombre del catálogo de datos.

  • sistema: el espacio de nombres que contiene la función. Todas las implementaciones del conector Athena utilizan este espacio de nombres.

  • function_name: el nombre de la función que envía la consulta de acceso directo al origen de datos. Suele denominarse query. La combinación catalog.system.function_name es la ruta de resolución completa de la función.

  • arg1, arg2 y así sucesivamente: argumentos de la función. El usuario debe proporcionarlos a la función. En la mayoría de los casos, se trata de la cadena de consulta que se transmite al origen de datos.

En la mayoría de los orígenes de datos, el primer y único argumento es query seguido del operador de flecha => y la cadena de consulta.

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

Para simplificar, puede omitir el argumento con nombre opcional query y el operador de flecha =>.

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

Puede simplificar aún más la consulta al eliminar el nombre del catalog si la consulta se ejecuta dentro del contexto del catálogo objetivo.

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

Si el origen de datos requiere más que la cadena de consulta, utilice los argumentos con nombre en el orden esperado por el origen de datos. Por ejemplo, la expresión arg1 => 'arg1Value' contiene el primer argumento y su valor. El nombre arg1 es específico del origen de datos y puede variar de un conector a otro.

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

Lo anterior también se puede simplificar al eliminar los nombres de los argumentos. Sin embargo, debe seguir el orden de la firma del método. Consulte la documentación de cada conector para obtener más información sobre la firma de la función.

SELECT * FROM TABLE(catalog.system.query('arg1Value', 'arg2Value', 'arg3Value'))

Puede ejecutar varias consultas de acceso directo a través de diferentes conectores de Athena mediante la ruta de resolución completa de la función, como se muestra en el siguiente ejemplo.

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

Puede utilizar las consultas de acceso directo como parte de una vista federada. Se aplican las mismas limitaciones. Para más información, consulte Consulta de vistas federadas.

CREATE VIEW catalog.database.ViewName AS SELECT * FROM TABLE ( catalog.system.query('query') )

Para obtener información sobre la sintaxis exacta a utilizar con un conector particular, consulte la documentación del conector correspondiente.

Uso de comillas

Los valores de los argumentos, incluida la cadena de consulta que pase, deben escribirse entre comillas simples, como en el siguiente ejemplo.

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

Cuando la cadena de consulta está entre comillas dobles, la consulta falla. Se produce un error en la siguiente consulta y aparece el mensaje de error COLUMNA_NO_ENCONTRADA: línea 1:43: Columna 'seleccionar * de testdb.persons límite 10' no se puede resolver.

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

Para evitar una comilla simple, añada una comilla simple al original (por ejemplo, terry's_group a terry''s_group).

Ejemplos

El siguiente ejemplo de consulta envía una consulta a un origen de datos. La consulta selecciona todas las columnas de la tabla customer y limita los resultados a 10.

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

La siguiente instrucción ejecuta la misma consulta, pero elimina el argumento con nombre opcional query y el operador de flecha =>.

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

Además, se puede agrupar en una vista federada para optimizar su reutilización. Cuando se utiliza con una vista, debe emplear la ruta de resolución completa de la función.

CREATE VIEW AwsDataCatalog.default.example_view AS SELECT * FROM TABLE ( catalog.system.query('SELECT * FROM customer LIMIT 10;') )

Exclusión del acceso directo de las consultas

Para desactivar las consultas de acceso directo, agregue una variable de entorno de Lambda denominada enable_query_passthrough y configúrela en false.

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.