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 ] ASathena-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 deDefiner
debe tener todos los permisos otorgablesSELECT
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 DMLinvoker_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.