

# CREATE VIEW y CREATE PROTECTED MULTI DIALECT VIEW
<a name="create-view"></a>

Una vista es una tabla lógica a la que se puede hacer referencia en futuras consultas. Las vistas no contienen datos ni escriben datos. En su lugar, la consulta especificada por la vista se ejecuta cada vez que se hace referencia a la vista en otra consulta. 
+ `CREATE VIEW` crea una vista de Athena a partir de una consulta `SELECT` especificada. Las vistas de Athena funcionan en Athena. Para más información acerca de las vistas de Athena, consulte [Trabajo con vistas](views.md). 
+ `CREATE PROTECTED MULTI DIALECT VIEW` crea una vista de AWS Glue Data Catalog en el AWS Glue Data Catalog. Las vistas del AWS Glue Data Catalog proporcionan una única vista común entre los Servicios de AWS como Amazon Athena y Amazon Redshift. Para obtener más información acerca de las vistas del AWS Glue Data Catalog, consulte [Uso de vistas del Catálogo de datos en Athena](views-glue.md).

## CREATE VIEW
<a name="create-view-ate"></a>

Crea una vista para usarla en Athena.

### Sinopsis
<a name="synopsis"></a>

```
CREATE [ OR REPLACE ] VIEW view_name AS query
```

La cláusula opcional `OR REPLACE` le permite actualizar la vista existente sustituyéndola. Para obtener más información, consulte [Creación de vistas](views-console.md#creating-views).

### Ejemplos
<a name="examples"></a>

Para crear una vista `test` a partir de la tabla `orders`, utilice una consulta similar a la siguiente:

```
CREATE VIEW test AS
SELECT 
orderkey, 
orderstatus, 
totalprice / 2 AS half
FROM orders;
```

Para crear una vista `orders_by_date` a partir de la tabla `orders`, utilice la siguiente consulta:

```
CREATE VIEW orders_by_date AS
SELECT orderdate, sum(totalprice) AS price
FROM orders
GROUP BY orderdate;
```

Para actualizar una vista existente, utilice un ejemplo similar al siguiente:

```
CREATE OR REPLACE VIEW test AS
SELECT orderkey, orderstatus, totalprice / 4 AS quarter
FROM orders;
```

 Para obtener más información acerca del uso de vistas de Athena, consulte [Trabajo con vistas](views.md).

## CREATE PROTECTED MULTI DIALECT VIEW
<a name="create-protected-multi-dialect-view"></a>

Crea una vista del AWS Glue Data Catalog en el AWS Glue Data Catalog. Una vista del Catálogo de datos es un esquema de vista única que funciona en Athena y otros motores SQL, como Amazon Redshift y Amazon EMR.

### Sintaxis
<a name="create-protected-multi-dialect-view-syntax"></a>

```
CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW {{view_name}} 
SECURITY DEFINER 
[ SHOW VIEW JSON ]
AS {{query}}
```

**OR REPLACE**  
(Opcional) Sustituye la vista existente para actualizarla. No se puede reemplazar una vista del catálogo de datos si en la vista hay dialectos SQL de otros motores. Si el motor de llamada tiene el único dialecto SQL presente en la vista, la vista se puede reemplazar.

**PROTECTED**  
Palabra clave necesaria. Especifica que la vista está protegida contra las filtraciones de datos. Las vistas de catálogo de datos solo se pueden crear como una vista `PROTECTED`.

**MULTI DIALECT**  
Especifica que la vista admite los dialectos SQL de diferentes motores de consulta y, por lo tanto, esos motores pueden leerla.

**SECURITY DEFINER**  
Especifica que la semántica del definidor está vigente en esta vista. La semántica de los definidores significa que los permisos de lectura en vigencia de las tablas subyacentes pertenecen a la entidad principal o al rol que definió la vista y no a la entidad principal que realiza la lectura real.

**SHOW VIEW JSON**  
(Opcional) Devuelve el archivo JSON de la especificación de la vista del Catálogo de datos sin crear una vista. Esta opción de “ejecución de práctica” es útil cuando se desea validar el SQL de la vista y devolver los metadatos de la tabla que utilizará AWS Glue.

### Ejemplo
<a name="create-protected-multi-dialect-view-syntax-example"></a>

En el siguiente ejemplo se crea la vista del catálogo de datos de `orders_by_date` en función de una consulta de la tabla `orders`.

```
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 más información acerca de cómo usar las vistas del AWS Glue Data Catalog, consulte [Uso de vistas del Catálogo de datos en Athena](views-glue.md).