Uso de vistas - Amazon Athena

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de vistas

En Amazon Athena, una vista es una tabla lógica, no física. La consulta que define una vista se ejecuta cada vez que se hace referencia a la vista en una consulta.

Puede crear una vista de una consulta SELECT y, a continuación, hacer referencia a dicha vista en futuras consultas. Para obtener más información, consulte CREATE VIEW.

¿Cuándo debería utilizar vistas?

Puede crear vistas para lo siguiente:

  • Consultar un subconjunto de datos. Por ejemplo, puede crear una vista con un subconjunto de columnas a partir de la tabla original para simplificar la consulta de datos.

  • Combinar varias tablas en una consulta. Si tiene varias tablas y desea combinarlas con UNION ALL, puede crear una vista con esa expresión para simplificar las consultas en las tablas combinadas.

  • Ocultar la complejidad de las consultas de base existentes y simplificar las consultas que ejecutan los usuarios. A menudo, las consultas de base incluyen combinaciones de tablas, expresiones en la lista de columnas y otra sintaxis SQL que dificultan su comprensión y depuración. Puede crear una vista que oculte la complejidad y simplifique las consultas.

  • Experimentar con técnicas de optimización y crear consultas optimizadas. Por ejemplo, si encuentra una combinación de condiciones WHERE, orden JOIN u otras expresiones que consigan un mejor rendimiento, puede crear una vista con dichas cláusulas y expresiones. De este modo, las aplicaciones podrán realizar consultas relativamente sencillas a esta vista. Si posteriormente encuentra una forma mejor de optimizar la consulta original, cuando vuelva a crear la vista, todas las aplicaciones aprovecharán inmediatamente la consulta de base optimizada.

  • Ocultar la tabla subyacente y los nombres de las columnas, y minimizar los problemas de mantenimiento si dichos nombres cambian. En ese caso, vuelva a crear la vista con los nuevos nombres. Todas las consultas que usan la vista en lugar de las tablas subyacentes seguirán ejecutándose sin cambios.

Acciones compatibles con las vistas en Athena

Athena admite las siguientes acciones con vistas. Puede ejecutar estos comandos en el editor de consultas.

Instrucción Descripción
CREATE VIEW

Crea una nueva vista de una consulta SELECT especificada. Para obtener más información, consulte Creación de vistas.

La cláusula opcional OR REPLACE le permite actualizar la vista existente sustituyéndola.

DESCRIBE VIEW

Muestra la lista de columnas de la vista citada. Esto le permite examinar los atributos de una vista compleja.

DROP VIEW

Elimina una vista existente. La cláusula opcional IF EXISTS elimina el error si la vista no existe.

SHOW CREATE VIEW

Muestra la instrucción SQL que crea la vista especificada.

SHOW VIEWS

Muestra todas las vistas de la base de datos especificada o de la base de datos actual si se omite el nombre de la base de datos. Utilice la cláusula opcional LIKE con una expresión regular para limitar la lista de nombres de vista. También puede ver la lista de vistas en el panel izquierdo de la consola.

SHOW COLUMNS

Muestra las columnas del esquema de una vista.

Consideraciones sobre las vistas

Las siguientes consideraciones se aplican a la creación y el uso de vistas en Athena:

  • En Athena, puede obtener una vista previa y trabajar con las vistas creadas en la consola de Athena, en la AWS Glue Data Catalog, si ha migrado para utilizarla, o con Presto ejecutándose en el clúster de Amazon EMR conectado al mismo catálogo. No se puede obtener vistas previas ni agregar a vistas de Athena creadas de otras formas.

  • Si está creando vistas a través del catálogo de AWS Glue datos, debe incluir el PartitionKeys parámetro y establecer su valor en una lista vacía, de la siguiente manera:. "PartitionKeys":[] De lo contrario, la consulta de la vista devolverá un error en Athena. El siguiente ejemplo muestra una vista creada desde el catálogo de datos con "PartitionKeys":[]:

    aws glue create-table --database-name mydb --table-input '{ "Name":"test", "TableType": "EXTERNAL_TABLE", "Owner": "hadoop", "StorageDescriptor":{ "Columns":[{ "Name":"a","Type":"string"},{"Name":"b","Type":"string"}], "Location":"s3://xxxxx/Oct2018/25Oct2018/", "InputFormat":"org.apache.hadoop.mapred.TextInputFormat", "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat", "SerdeInfo":{"SerializationLibrary":"org.apache.hadoop.hive.serde2.OpenCSVSerde", "Parameters":{"separatorChar": "|", "serialization.format": "1"}}},"PartitionKeys":[]}'
  • Si ha creado vistas Athena en el catálogo de datos, este trata las vistas como tablas. Puede utilizar el control de acceso detallado de nivel de tablas en el catálogo de datos para restringir el acceso a estas vistas.

  • Athena impide ejecutar vistas recursivas y muestra un mensaje de error en tales casos. Una vista recursiva es una consulta de vistas que hace referencia a sí misma.

  • 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.

  • Puede crear y ejecutar vistas anidadas siempre y cuando la consulta detrás de la vista anidada sea válida y las tablas y las bases de datos existan.

Limitaciones de las vistas

  • Los nombres de vistas de Athena no pueden contener caracteres especiales distintos del guion bajo (_). Para obtener más información, consulte Nombres de tablas, bases de datos y columnas.

  • Evite utilizar palabras clave reservadas para asignar nombres a las vistas. Si utiliza palabras clave reservadas, use comillas dobles para destacar las palabras clave reservadas en las consultas de vistas. Consulte Palabras clave reservadas.

  • No se pueden utilizar vistas creadas en Athena con almacenes de metadatos externos de Hive ni UDF. Para obtener información sobre el uso de vistas creadas de forma externa en Hive, consulte Trabajo con vistas de Hive.

  • No puede utilizar vistas con funciones geoespaciales.

  • No se pueden utilizar vistas para administrar el control de acceso a los datos en Amazon S3. Para consultar una vista, necesita permisos de acceso a los datos almacenados en Amazon S3. Para obtener más información, consulte Acceso a Amazon S3.

  • Si bien tanto la versión 2 como la 3 del motor de Athena admiten la consulta de vistas entre cuentas, no se puede crear una vista que incluya un AWS Glue Data Catalog entre cuentas. Para obtener información sobre el acceso a catálogos de datos entre cuentas, consulte Acceso entre cuentas a los catálogos de datos de AWS Glue.

  • Las columnas de metadatos ocultas de Hive o Iceberg $bucket, $file_modified_time, $file_size y $partition no se admiten en las vistas de Athena. Para obtener información sobre el uso de la columna de metadatos $path en Athena, consulte Obtención de las ubicaciones de archivos para los datos de origen en Simple Storage Service (Amazon S3) .

Uso de vistas en la consola

En la consola de Athena puede hacer lo siguiente:

  • Ver todas las vistas en el panel izquierdo, donde se enumeran las tablas.

  • Filtrar vistas.

  • Obtener una vista previa de una vista, mostrar sus propiedades, editarla o eliminarla.

Para mostrar las acciones de una vista

Las vistas se muestran en la consola únicamente si ya las ha creado.

  1. En la consola de Athena, elija Vistas y, luego, elija una vista para expandirla y mostrar las columnas de la vista.

  2. Haga clic en los tres puntos verticales junto a la vista para mostrar una lista de acciones.

    
                        Menú de acciones de una vista.
  3. Abra este menú para obtener una vista previa de la vista, insertar el nombre de la vista en el editor de consultas, eliminar la vista, ver las propiedades de la vista o mostrar y editar la vista en el editor de consultas.

Creación de vistas

Puede crear una vista en la consola de Athena mediante una plantilla o bien ejecutar una consulta existente.

Para usar una plantilla para crear una vista
  1. En la consola de Athena, junto a Tablas y vistas, elija Crear y, a continuación, elija Crear vista.

    
                        Creación de una vista.

    Esta acción coloca una plantilla de vista editable en el editor de consultas.

  2. Edite la plantilla de vista según sus necesidades. Cuando ingrese un nombre para la vista en la instrucción, recuerde que los nombres de las vistas no pueden contener caracteres especiales que no sean guiones bajos (_). Consulte Nombres de tablas, bases de datos y columnas. Evite utilizar Palabras clave reservadas para asignar nombres a las vistas.

    Para obtener más información sobre la creación de vistas, consulte CREATE VIEW y Ejemplos de vistas.

  3. Elija Ejecutar para crear la vista. La vista aparece en la lista de vistas de la consola de Athena.

Para crear una vista a partir de una consulta existente
  1. Use el editor de consultas de Athena para ejecutar una consulta existente.

  2. En la ventana del editor de consultas, elija Crear y, a continuación, Vista a partir de la consulta.

    
                        Elija Crear, Vista a partir de la consulta.
  3. En el cuadro de diálogo Crear vista, ingrese un nombre para la vista y, luego, elija Crear. Los nombres de vistas no pueden contener caracteres especiales distintos del guion bajo (_). Consulte Nombres de tablas, bases de datos y columnas. Evite utilizar Palabras clave reservadas para asignar nombres a las vistas.

    Athena agrega la vista a la lista de vistas en la consola y muestra la instrucción CREATE VIEW para la vista en el editor de consultas.

Notas
  • Si elimina una tabla en la que se basa la vista y luego intenta ejecutar la vista, Athena muestra un mensaje de error.

  • Puede crear una vista anidada, que es una vista sobre una vista existente. Athena le impide ejecutar una vista recursiva que hace referencia a sí misma.

Ejemplos de vistas

Para mostrar la sintaxis de la consulta de vista, utilice SHOW CREATE VIEW.

ejemplo Ejemplo 1

Tenga en cuenta las siguientes dos tablas: una tabla employees con dos columnas, id y name, y una tabla salaries, con dos columnas, id y salary.

En este ejemplo, creamos una vista llamada name_salary como una consulta SELECT que obtiene una lista de ID mapeada con salarios de las tablas employees y salaries:

CREATE VIEW name_salary AS SELECT employees.name, salaries.salary FROM employees, salaries WHERE employees.id = salaries.id
ejemplo Ejemplo 2

En el siguiente ejemplo, creamos una vista llamada view1 que le permite ocultar la sintaxis de consultas más complejas.

Esta vista se ejecuta en dos tablas, table1 y table2, donde cada tabla es una consulta SELECT distinta. La vista selecciona las columnas de table1 y une los resultados con table2. Esta unión se basa en la columna a que está presente en ambas tablas.

CREATE VIEW view1 AS WITH table1 AS ( SELECT a, MAX(b) AS the_max FROM x GROUP BY a ), table2 AS ( SELECT a, AVG(d) AS the_avg FROM y GROUP BY a) SELECT table1.a, table1.the_max, table2.the_avg FROM table1 JOIN table2 ON table1.a = table2.a;

Para obtener información sobre cómo consultar vistas federadas, vea Consulta de vistas federadas.