es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consultas federadas de Athena contra el campo JSONB de Postgres

Parece que Athena no comprende los campos JSONB de Postgres y los considera VARCHARS. Esto significa que cualquier consulta que involucre expresiones de ruta JSON se ejecutará en el lado de Athena, lo que a su vez significa que cada fila en la base de datos debe ser enviada a Athena para su evaluación.

¿Cómo sería posible consultar los campos JSONB de Postgres utilizando las funciones nativas de JSON de Postgres? Es decir, ¿cómo puedo hacer una consulta en Athena que utilice las funciones nativas de Postgres que se ejecutan en Postgres para filtrar las filas devueltas?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para consultar campos JSONB de Postgres con funciones JSON nativas de Postgres, podemos utilizar el Catálogo de Datos de AWS Glue, el cual permite la creación de una tabla externa en Athena que apunta a la tabla de Postgres que contiene datos JSONB.

    Primero, crea un Rastreador de AWS Glue para descubrir la tabla de Postgres con datos JSONB y crear una base de datos y tabla en el Catálogo de Datos de AWS Glue.

    Luego, crea una consulta en Athena que haga referencia a la tabla externa en el Catálogo de Datos de Glue y utiliza las funciones nativas de JSON de Postgres en el filtro de la consulta para filtrar las filas devueltas. Estas funciones se ejecutarán en el lado de Postgres y no en Athena, evitando la necesidad de enviar cada fila a Athena para su evaluación.

    Por ejemplo, la siguiente consulta filtra por una ruta JSON específica utilizando la función json_extracts_path_text:

    SELECT *
    FROM external_table
    WHERE json_extract_path_text(json_column, 'path') = 'value';
    

    Utilizando este método, podemos consultar de manera efectiva los campos JSONB de Postgres con funciones JSON nativas de Postgres en Athena, sin incurrir en la sobrecarga de enviar cada fila a Athena para su evaluación.

Comments are closed.