CREATE SEMANTIC VIEW

Crée une nouvelle vue sémantique dans le schéma actuel/spécifié.

Voir aussi ::

DESCRIBE SEMANTIC VIEW, DROP SEMANTIC VIEW, SHOW SEMANTIC VIEWS

Syntaxe

CREATE [ OR REPLACE ] SEMANTIC VIEW [ IF NOT EXISTS ] <name>
  TABLES ( logicalTable [ , ... ] )
  [ RELATIONSHIPS ( relationshipDef [ , ... ] ) ]
  [ FACTS ( semanticExpression [ , ... ] ) ]
  [ DIMENSIONS ( semanticExpression [ , ... ] ) ]
  [ METRICS ( semanticExpression [ , ... ] ) ]
  [ COMMENT = '<comment_about_semantic_view>' ]
  [ COPY GRANTS ]
Copy

où :

logicalTable ::=
  [ <table_alias> AS ] <table_name>
  [ PRIMARY KEY ( <primary_key_column_name> [ , ... ] ) ]
  [
    UNIQUE ( <unique_column_name> [ , ... ] )
    [ ... ]
  ]
  [ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ]
  [ COMMENT = '<comment_about_table>' ]
Copy
relationshipDef ::=
  [ <relationship_identifier> AS ]
  <table_alias> ( <column_name> [ , ... ] )
  REFERENCES
  <ref_table_alias> [ ( <ref_column_name> [ , ... ] ) ]
Copy
semanticExpression ::=
  <table_alias>.<dim_fact_or_metric> AS <sql_expr>
  [ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ]
  [ COMMENT = '<comment_about_dim_fact_or_metric>' ]
Copy

Note

L’ordre des clauses est important. Par exemple, vous devez spécifier la clause FACTS avant la clause DIMENSIONS.

Vous pouvez faire référence à des expressions sémantiques définies dans des clauses ultérieures. Par exemple, même si fact_2 est défini après fact_1, vous pouvez toujours utiliser fact_2 dans la définition de fact_1.

Paramètres requis

name

Spécifie le nom de la vue sémantique ; le nom doit être unique pour le schéma dans lequel la table est créée.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (par exemple, "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus d’informations, voir Exigences relatives à l’identificateur.

Paramètres facultatifs

COMMENT = 'comment_about_semantic_view'

Spécifie un commentaire sur la vue sémantique.

COPY GRANTS

Lorsque vous spécifiez OR REPLACE pour remplacer une vue sémantique existante par une nouvelle vue sémantique, vous pouvez définir ce paramètre pour copier tous les privilèges accordés à la vue sémantique existante dans la nouvelle vue sémantique.

La commande copie tous les privilèges accordés à l’exception de OWNERSHIP, de la vue sémantique existante vers la nouvelle vue sémantique. Le rôle qui exécute l’instruction CREATE SEMANTIC VIEW est propriétaire de la nouvelle vue.

La nouvelle vue sémantique n’hérite pas des attributions futures définies pour le type d’objet dans le schéma.

L’opération de copie des attributions s’effectue de manière atomique avec l’instruction CREATE SEMANTIC VIEW (en d’autres termes, au sein de la même transaction).

Si vous omettez COPY GRANTS, la nouvelle vue sémantique n’hérite pas des privilèges d’accès explicites accordés à la vue sémantique existante, mais hérite des futures attributions définies pour le type d’objet dans le schéma.

Paramètres des tables logiques (logicalTable)

table_alias AS

Spécifie un alias facultatif pour la table logique.

  • Si vous spécifiez un alias, vous devez utiliser cet alias lorsque vous référencez la table logique dans les relations, les faits, les dimensions et les métriques.

  • Si vous ne spécifiez pas d’alias, vous utilisez le nom non qualifié de la table logique pour faire référence à la table.

table_name

Spécifie le nom de la table logique.

PRIMARY KEY ( primary_key_column_name [ , ... ] )

Spécifie les noms d’une ou plusieurs colonnes de la table logique qui servent de clé primaire à la table.

UNIQUE ( unique_column_name [ , ... ] )

Spécifie le nom d’une colonne contenant une valeur unique ou les noms des colonnes qui contiennent des combinaisons uniques de valeurs.

Par exemple, si la colonne service_id contient des valeurs uniques, spécifiez :

TABLES(
  ...
  product_table UNIQUE (service_id)
Copy

Si la combinaison des valeurs des colonnes product_area_id et product_id est unique, indiquez-le :

TABLES(
  ...
  product_table UNIQUE (product_area_id, product_id)
  ...
Copy

Vous pouvez identifier plusieurs colonnes et plusieurs combinaisons de colonnes comme étant uniques dans une table logique donnée :

TABLES(
  ...
  product_table UNIQUE (product_area_id, product_id) UNIQUE (service_id)
  ...
Copy

Note

Si vous avez déjà identifié une colonne comme étant une colonne de clé primaire (en utilisant PRIMARY KEY), n’ajoutez pas la clause UNIQUE pour cette colonne.

WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] )

Spécifie un ou plusieurs synonymes pour la table logique. Contrairement aux alias, les synonymes sont utilisés à des fins d’information uniquement. Vous n’utilisez pas de synonymes pour faire référence à la table logique dans les relations, les dimensions, les métriques et les faits.

COMMENT = 'comment_about_table'

Spécifie un commentaire sur la table logique.

Paramètres pour les relations (relationshipDef)

relationship_identifier AS

Spécifie un identificateur facultatif pour la relation.

table_alias ( column_name [ , ... ] )

Spécifie une des tables logiques et une ou plusieurs de ses colonnes qui font référence à des colonnes d’une autre table logique.

ref_table_alias [ ( ref_column_name [ , ... ] ) ]

Spécifie l’autre table logique et une ou plusieurs de ses colonnes qui sont référencées par la première table logique.

Les colonnes doivent être identifiées comme étant de type PRIMARY KEY ou UNIQUE dans la définition de la table logique.

Paramètres pour les faits, les dimensions et les métriques (semanticExpression)

Dans une vue sémantique, vous devez définir au moins une dimension ou une métrique, ce qui signifie que vous devez spécifier au moins une clause DIMENSIONS ou METRICS.

Utilisez les paramètres suivants pour définir le fait, la dimension ou la métrique :

table_alias.semantic_expression_name AS sql_expr

Spécifie un nom pour une dimension, un fait ou une métrique et l’expression SQL pour calculer cette dimension, ce fait ou cette métrique.

WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] )

Spécifie un ou plusieurs synonymes facultatifs pour la dimension, le fait ou la métrique. Notez que les synonymes ne sont utilisés qu’à titre d’information. Vous ne pouvez pas utiliser un synonyme pour faire référence à une dimension, un fait ou une métrique dans une autre dimension, un autre fait ou une autre métrique.

COMMENT = 'comment_about_dim_fact_or_metric'

Spécifie un commentaire facultatif sur la dimension, le fait ou la métrique.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette opération doit au minimum disposer des privilèges suivants :

Privilège

Objet

Remarques

CREATE SEMANTIC VIEW

Schéma

Obligatoire pour créer une nouvelle vue sémantique.

SELECT

Table, vue

Exigé pour toutes les tables et/ou vues utilisées dans la définition de la vue sémantique.

Le privilège USAGE relatif à la base de données et au schéma parents est exigé pour effectuer des opérations sur tout objet d’un schéma.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

  • Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.

Exemples

Voir Créer une vue sémantique.