Tous les produits
Search
Centre de documentation

Hologres:View

Dernière mise à jour :Aug 11, 2026

Une vue est une table virtuelle définie par une requête SQL. Elle permet d'encapsuler une logique de requête complexe afin que d'autres utilisateurs ou applications puissent exécuter une simple instruction SELECT sur la vue, sans avoir à rédiger eux-mêmes la requête sous-jacente.

Par exemple, si votre entrepôt de données stocke des enregistrements de commandes et que vous souhaitez permettre à votre équipe analytique d'accéder aux résumés des revenus sans exposer les détails bruts des transactions, créez une vue qui joint et agrège préalablement les tables pertinentes. L'équipe analytique interroge la vue tandis que les tables sous-jacentes restent protégées.

Hologres prend en charge la création de vues basées sur des tables internes, des tables externes ou d'autres vues, y compris des vues fédérées qui combinent des données issues de tables internes et externes.

Notes d'utilisation

Règles de modification des données

Type de vue Modification des données possible ?
Vue mono-table Oui — les modifications apportées à la vue mettent à jour la table de base, et les modifications de la table de base sont reflétées dans la vue. Restreignez l'accès en écriture à la vue pour éviter toute modification involontaire.
Vue multi-tables Non — les données contenues dans les vues multi-tables sont en lecture seule.

Vues inter-schémas et SLPM

Si le modèle d'autorisations au niveau du schéma (SLPM) est activé sur une base de données, ne créez pas de vues référençant des tables situées dans différents schémas. Étant donné que des autorisations distinctes sont requises pour chaque schéma dans le cadre du SLPM, il est impossible d'interroger des vues inter-schémas.

Autorisation des vues

Hologres applique le mode « security definer » de PostgreSQL pour l'autorisation des vues. Pour qu'un utilisateur puisse interroger une vue, les deux conditions suivantes doivent être remplies :

Rôle Autorisation requise
Créateur de la vue (Utilisateur A) SELECT sur la table de base
Consommateur de la vue (Utilisateur B) SELECT sur la vue

L'utilisateur B n'a pas besoin d'un accès direct à la table de base, mais uniquement à la vue. Les autorisations du créateur de la vue sont utilisées lors de l'exécution de celle-ci.

Syntaxe

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

<view_name> correspond au nom de la vue. L'instruction SELECT définit la requête représentée par la vue.

Exemples

Créer une vue basée sur une table interne

  1. Créez une table interne et insérez des exemples de données :

    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. Créez une vue sur la table et interrogez-la :

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

    Résultat attendu :

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

Créer une vue basée sur une table externe

  1. Créez une table externe mappée à une table 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. Créez une vue sur la table externe et interrogez-la :

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

    Résultat attendu :

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

Créer une vue fédérée

Une vue fédérée unifie les données provenant de tables internes et de tables externes en un seul objet interrogeable. Cette approche s'avère utile lorsqu'une partie de vos données réside dans le stockage interne de Hologres et le reste dans une source externe telle que MaxCompute : vous pouvez interroger les deux sources via une seule vue sans déplacer les données. La vue fédérée utilise l'opérateur UNION ALL pour combiner les deux sources.

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

SELECT * FROM view1;

Résultat attendu :

 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)

Autres opérations

Renommer une vue

Le renommage des vues nécessite Hologres V2.1.18 ou une version ultérieure.

ALTER VIEW <view_name_1> RENAME TO <view_name_2>;

Supprimer une vue

DROP VIEW <view_name>;

Lister toutes les vues

Exécutez la requête SQL suivante pour lister toutes les vues du schéma actuel :

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 vous utilisez un client psql, exécutez plutôt la commande \dv.

Consulter la DDL d'une vue

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