Todos os produtos
Search
Central de documentação

Hologres:View

Última atualização: Jun 28, 2026

Uma view é uma tabela virtual definida por uma consulta SQL. Use views para encapsular lógicas de consulta complexas e permitir que outros usuários ou aplicações executem um simples SELECT na view, em vez de escrever a consulta subjacente manualmente.

Por exemplo, se seu data warehouse armazena registros de pedidos e a equipe de análise precisa acessar resumos de receita sem expor detalhes brutos das transações, crie uma view que pré-una e agregue as tabelas relevantes. A equipe de análise consulta a view e as tabelas subjacentes permanecem protegidas.

O Hologres permite criar views baseadas em tabelas internas, tabelas externas ou outras views, incluindo views federadas que combinam dados de tabelas internas e externas.

Observações de uso

Regras de modificação de dados

Tipo de view

Permite modificar dados?

View de tabela única

Sim — alterações na view atualizam a tabela base, e mudanças na tabela base refletem-se na view. Restrinja o acesso de escrita à view para evitar modificações não intencionais.

View de múltiplas tabelas

Não — os dados em views de múltiplas tabelas são somente leitura.

Views entre schemas e SLPM

Se o modelo de permissão no nível de schema (SLPM) estiver ativado em um banco de dados, não crie views que referenciem tabelas em diferentes schemas. Como schemas distintos exigem permissões diferentes sob o SLPM, não é possível consultar views entre schemas.

Autorização de view

O Hologres segue o modo security definer do PostgreSQL para autorização de views. Para consultar uma view, o usuário deve atender às duas condições abaixo:

Função

Permissão necessária

Criador da view (Usuário A)

SELECT na tabela base

Consumidor da view (Usuário B)

SELECT na view

O Usuário B não precisa de acesso direto à tabela base, apenas à view. O sistema usa as permissões do criador da view durante a execução.

Sintaxe

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

<view_name> é o nome da view. A instrução SELECT define a consulta representada pela view.

Exemplos

Crie uma view baseada em uma tabela interna

  1. Crie uma tabela interna e insira dados de exemplo:

    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. Crie uma view na tabela e consulte-a:

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

    Saída 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)

Crie uma view baseada em uma tabela externa

  1. Crie uma tabela externa mapeada para uma tabela do 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. Crie uma view na tabela externa e consulte-a:

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

    Saída esperada:

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

Crie uma view federada

Uma view federada unifica dados de tabelas internas e externas em um único objeto consultável. Esse recurso é útil quando parte dos dados reside no armazenamento interno do Hologres e o restante está em uma fonte externa, como o MaxCompute. É possível consultar ambas as fontes por meio de uma única view sem mover dados. A view federada usa UNION ALL para combinar as duas fontes.

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

SELECT * FROM view1;

Saída 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)

Mais operações

Renomeie uma view

Renomear views requer Hologres V2.1.18 ou posterior.

ALTER VIEW <view_name_1> RENAME TO <view_name_2>;

Remova uma view

DROP VIEW <view_name>;

Liste todas as views

Execute o seguinte SQL para listar todas as views no schema atual:

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;

Se você usar um cliente psql, execute \dv.

Consulte o DDL de uma view

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