Todos los productos
Search
Centro de documentos

Hologres:Vista

Última actualización: Sep 05, 2026

Una vista es una tabla virtual definida por una consulta SQL. Use las vistas para encapsular lógica de consulta compleja, de modo que otros usuarios o aplicaciones puedan ejecutar un SELECT sencillo contra la vista en lugar de escribir la consulta subyacente.

Por ejemplo, si su almacén de datos guarda registros de pedidos y necesita que el equipo de análisis acceda a resúmenes de ingresos sin exponer los detalles brutos de las transacciones, cree una vista que una y agregue previamente las tablas relevantes. El equipo de análisis consulta la vista y las tablas subyacentes permanecen protegidas.

Hologres admite la creación de vistas basadas en tablas internas, tablas externas u otras vistas, incluidas las vistas federadas que combinan datos de tablas internas y externas.

Notas de uso

Reglas de modificación de datos

Tipo de vista

¿Se pueden modificar los datos?

Vista de tabla única

Sí: los cambios en la vista actualizan la tabla base, y los cambios en la tabla base se reflejan en la vista. Restrinja el acceso de escritura a la vista para evitar modificaciones no intencionales.

Vista de múltiples tablas

No: los datos en las vistas de múltiples tablas son de solo lectura.

Vistas entre esquemas y SLPM

Si el modelo de permisos a nivel de esquema (SLPM) está habilitado en una base de datos, no cree vistas que hagan referencia a tablas de distintos esquemas. Dado que los diferentes esquemas requieren distintos permisos bajo SLPM, las vistas entre esquemas no se pueden consultar.

Autorización de vistas

Hologres sigue el modo de definidor de seguridad de PostgreSQL para la autorización de vistas. Para que un usuario consulte una vista, se deben cumplir las dos condiciones a continuación:

Rol

Permiso obligatorio

Creador de la vista (Usuario A)

SELECT en la tabla base

Consumidor de la vista (Usuario B)

SELECT en la vista

El Usuario B no necesita acceso directo a la tabla base, solo a la vista. Los permisos del creador de la vista se usan cuando se ejecuta la vista.

Sintaxis

CREATE VIEW <view_name> AS
SELECT column1, column2, ...
FROM table_name
WHERE [condition];

<view_name> es el nombre de la vista. La instrucción SELECT define la consulta que representa la vista.

Ejemplos

Crear una vista basada en una tabla interna

  1. Cree una tabla interna e inserte datos de ejemplo:

    CREATE TABLE holo_test (
      amount decimal(10, 2),
      rate   decimal(10, 2)
    );
    
    INSERT INTO holo_test VALUES
      (12.12, 13.13),
      (14.14, 15.15),
      (16.16, 17.17),
      (17.1,  17),
      (18.01, 19);
  2. Cree una vista sobre la tabla y consúltela:

    CREATE VIEW holo_view AS SELECT * FROM holo_test;
    
    SELECT * FROM holo_view;

    Salida esperada:

     amount | rate
    --------+-------
      12.12 | 13.13
      14.14 | 15.15
      16.16 | 17.17
      17.10 | 17.00
      18.01 | 19.00
    (5 rows)

Crear una vista basada en una tabla externa

  1. Cree una tabla externa asignada a una tabla de MaxCompute (ODPS):

    CREATE FOREIGN TABLE IF NOT EXISTS holo_foreign_test (
      amount decimal(10, 2),
      rate   decimal(10, 2)
    )
    SERVER odps_server
    OPTIONS (project_name '<projectname>', table_name '<odps_name>');
    
    SELECT * FROM holo_foreign_test LIMIT 2;
  2. Cree una vista sobre la tabla externa y consúltela:

    CREATE VIEW foreign_view AS SELECT * FROM holo_foreign_test;
    
    SELECT * FROM foreign_view LIMIT 2;

    Salida esperada:

     amount | rate
    --------+-------
      12.12 | 13.13
      14.14 | 15.15

Crear una vista federada

Una vista federada unifica datos de tablas internas y externas en un único objeto consultable. Esto resulta útil cuando parte de sus datos reside en el almacenamiento interno de Hologres y el resto se encuentra en una fuente externa como MaxCompute; puede consultar ambos orígenes mediante una sola vista sin mover los datos. La vista federada usa UNION ALL para combinar ambas fuentes.

CREATE VIEW view1 AS
  SELECT * FROM holo_view
  UNION ALL
  SELECT * FROM foreign_view;

SELECT * FROM view1;

Salida esperada:

 amount | rate
--------+-------
  12.12 | 13.13
  14.14 | 15.15
  16.16 | 17.17
   17.1 |    17
  18.01 |    19
  12.12 | 13.13
  14.14 | 15.15
  16.16 | 17.17
  17.10 | 17.00
  18.01 | 19.00
  12.12 | 13.13
  14.14 | 15.15
  16.16 | 17.17
   17.1 |    17
  18.01 |    19
  12.12 | 13.13
  14.14 | 15.15
  16.16 | 17.17
   17.1 |    17
  18.01 |    19
(20 rows)

Más operaciones

Cambiar el nombre de una vista

Para cambiar el nombre de las vistas se requiere Hologres V2.1.18 o posterior.

ALTER VIEW <view_name_1> RENAME TO <view_name_2>;

Eliminar una vista

DROP VIEW <view_name>;

Listar todas las vistas

Ejecute el siguiente código SQL para listar todas las vistas del esquema actual:

SELECT n.nspname AS "Schema",
       c.relname AS "Name",
       CASE c.relkind
         WHEN 'r' THEN 'table'
         WHEN 'v' THEN 'view'
         WHEN 'm' THEN 'materialized view'
         WHEN 'i' THEN 'index'
         WHEN 'S' THEN 'sequence'
         WHEN 's' THEN 'special'
         WHEN 'f' THEN 'foreign table'
         WHEN 'p' THEN 'table'
         WHEN 'I' THEN 'index'
       END AS "Type",
       pg_catalog.pg_get_userbyid(c.relowner) AS "Owner"
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('v', '')
  AND n.nspname <> 'pg_catalog'
  AND n.nspname <> 'information_schema'
  AND n.nspname !~ '^pg_toast'
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1, 2;

Si usa un cliente psql, ejecute \dv en su lugar.

Consultar el DDL de una vista

CREATE EXTENSION hg_toolkit;
SELECT hg_dump_script('<view_name>');