Uso de vistas del Catálogo de datos en Athena - Amazon Athena

Uso de vistas del Catálogo de datos en Athena

La creación de vistas del Catálogo de datos en Amazon Athena requiere una declaración especial CREATE VIEW. Para consultarlas se utiliza la sintaxis SQL SELECT convencional.

Creación de una vista del Catálogo de datos

Para crear una vista del Catálogo de datos de Athena, utilice la siguiente sintaxis.

CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW view_name SECURITY DEFINER [ SHOW VIEW JSON ] AS athena-sql-statement
nota

La opción SHOW VIEW JSON se aplica únicamente a las vistas del Catálogo de datos y no a las vistas de Athena. Al utilizar la opción SHOW VIEW JSON, se realiza una “ejecución de prueba” que valida la entrada y, si la validación se completa correctamente, devuelve el archivo JSON del objeto de la tabla AWS Glue que representará la vista. La vista real no se crea. Si no se especifica la opción SHOW VIEW JSON, se completan las validaciones y la vista se crea de manera habitual en el Catálogo de datos.

En el siguiente ejemplo se muestra cómo un usuario del rol Definer crea la vista del Catálogo de datos orders_by_date. En el ejemplo se supone que el rol de Definer tiene todos los permisos SELECT en la tabla orders de la base de datos default.

CREATE PROTECTED MULTI DIALECT VIEW orders_by_date SECURITY DEFINER AS SELECT orderdate, sum(totalprice) AS price FROM orders WHERE order_city = 'SEATTLE' GROUP BY orderdate

Para obtener información sobre la sintaxis, consulte CREATE PROTECTED MULTI DIALECT VIEW.

Consulta de una vista del Catálogo de datos

Una vez creada la vista, el administrador de Lake Formation puede conceder permisos SELECT en la vista del Catálogo de datos a las entidades principales de Invoker. A continuación, las entidades principales del Invoker pueden consultar la vista sin tener acceso a las tablas base subyacentes a las que hace referencia la vista. A continuación se muestra un ejemplo de consulta del Invoker.

SELECT * from orders_by_date where price > 5000

Limitaciones

Las siguientes limitaciones de visualización del Catálogo de datos son específicas de Athena. Para obtener información sobre las limitaciones de las vistas del Catálogo de datos que se aplican tanto a Athena como a otros servicios, consulte la documentación de Lake Formation.

  • Las vistas del catálogo de datos no pueden hacer referencia a otras vistas.

  • Puede hacer referencia a un máximo de 10 tablas en la definición de vista.

  • Las tablas subyacentes deben registrarse en Lake Formation.

  • La entidad principal de DEFINER solo puede ser un rol de IAM.

  • El rol de DEFINER debe tener todos los permisos (otorgables) SELECT en las tablas subyacentes.

  • No se admiten las vistas del catálogo de datos UNPROTECTED.

  • No se admiten en la definición de vista las funciones definidas por el usuario (UDF).

  • Los orígenes de datos federados de Athena no se pueden utilizar en las vistas del catálogo de datos.

  • Las vistas del catálogo de datos no son compatibles con los metaalmacenes externos de Hive.

  • Athena muestra un mensaje de error cuando detecta vistas obsoletas. Se registra una vista obsoleta cuando se produce alguna de las siguientes situaciones:

    • La vista hace referencia a tablas o bases de datos que no existen.

    • Se realiza un cambio de esquema o metadatos en una tabla referenciada.

    • Una tabla referenciada se elimina y se vuelve a crear con un esquema o configuración diferente.

Permisos

Las vistas del catálogo de datos requieren tres roles de Lake Formation Admin, Definer y Invoker.

  • Lake Formation Admin: tiene acceso para configurar todos los permisos de Lake Formation.

  • Definer: crea la vista del catálogo de datos. El rol de Definer debe tener todos los permisos otorgables SELECT en todas las tablas subyacentes a las que hace referencia la definición de la vista.

  • Invoker: puede consultar la vista del catálogo de datos o comprobar sus metadatos. Para mostrar el invocador de una consulta, puede utilizar la función DML invoker_principal(). Para obtener más información, consulte invoker_principal().

Las relaciones de confianza del rol Definer deben permitir la acción sts:AssumeRole respecto de las entidades principales de servicios de AWS Glue y de Lake Formation. Para obtener más información, consulte Prerequisites for creating views en la Guía para desarrolladores de AWS Lake Formation.

También se requieren permisos de IAM para el acceso a Athena. Para obtener más información, consulte Políticas administradas de AWS para Amazon Athena.