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. Las vistas del catálogo de datos también se conocen como vistas de múltiples dialectos o MDV.

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

Consideraciones y limitaciones

La mayoría de las siguientes limitaciones de la vista del catálogo de datos se aplican específicamente a Athena. Para conocer las limitaciones adicionales de las vistas del catálogo de datos que también se aplican a otros servicios, consulte la documentación de Lake Formation.

  • Las vistas del catálogo de datos no pueden hacer referencia a otras vistas, a enlaces a recursos de bases de datos o a enlaces a recursos de tablas.

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

  • Las tablas no deben tener el permiso de lago de datos IAMAllowedPrincipals en Lake Formation. Si está presente, se produce el error Las vistas de múltiples dialectos solo pueden hacer referencia a tablas sin permisos IAMAllowedPrincipals.

  • La ubicación de Amazon S3 de la tabla debe estar registrada como ubicación de lago de datos de Lake Formation. Si la tabla no está registrada, se produce el error Las vistas de múltiples dialectos solo pueden hacer referencia a tablas administradas por Lake Formation. Para obtener información sobre cómo registrar ubicaciones de Amazon S3 en Lake Formation, consulte Registrar una ubicación de Amazon S3 en la Guía para desarrolladores de AWS Lake Formation.

  • Las llamadas a las API de AWS Glue GetTables y SearchTables no actualizan el parámetro IsRegisteredWithLakeFormation. Para visualizar el valor correcto del parámetro, utilice la API de AWS Glue GetTable. Para obtener más información, consulte Las API GetTables y SearchTables no actualizan el valor del parámetro IsRegisteredWithLakeFormation en la Guía para desarrolladores de AWS 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.