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 ] 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
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 errorLas 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 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.