Utiliser des commandes SQL pour créer et gérer des vues sémantiques¶
Cette rubrique explique comment utiliser les commandes SQL suivantes pour créer et gérer des vues sémantiques :
Cette rubrique explique également comment appeler la procédure stockée et la fonction suivantes pour créer une vue sémantique à partir d’une spécification YAML et obtenir la spécification d’une vue sémantique :
Privilèges requis pour créer ou remplacer une vue sémantique¶
Pour créer ou remplacer une vue sémantique, vous devez utiliser un rôle disposant des privilèges suivants :
CREATE SEMANTIC VIEW sur le schéma dans lequel vous créez la vue sémantique.
USAGE sur la base de données et le schéma dans lesquels vous créez la vue sémantique.
SELECT sur les tables et les vues utilisées dans la vue sémantique.
Pour plus d’informations sur les privilèges exigés pour interroger une vue sémantique, voir Privilèges requis pour interroger une vue sémantique.
Création d’une vue sémantique à l’aide de la commande CREATE SEMANTIC VIEW¶
Pour créer une vue sémantique, utilisez la commande CREATE SEMANTIC VIEW.
Note
Pour créer une vue sémantique à partir d’une spécification YAML, appelez la procédure stockée SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML.
La vue sémantique doit être valide. Voir Comment Snowflake valide les vues sémantiques.
L’exemple suivant utilise les données d’échantillon TPC-H disponibles dans Snowflake. Cet ensemble de données contient des tables qui représentent un scénario commercial simplifié avec des clients, des commandes et des éléments de ligne.
L’exemple crée une vue sémantique nommée tpch_rev_analysis en utilisant les tables de l’ensemble de données TPC-H. La vue sémantique définit :
Trois tables logiques (
orders,customersetline_items).Une relation entre les tables
ordersetcustomers.Une relation entre les tables
line_itemsetorders.Des faits qui seront utilisés pour calculer les métriques.
Des dimensions pour le nom du client, la date de la commande et l’année au cours de laquelle la commande a été passée.
Les métriques correspondant à la valeur moyenne d’une commande et au nombre de lignes moyen d’une commande.
Les sections suivantes expliquent cet exemple plus en détail :
Note
Pour un exemple complet, voir Exemple d’utilisation de SQL pour créer une vue sémantique.
Définir les tables logiques¶
Dans la commande CREATE SEMANTIC VIEW, utilisez la clause TABLES pour définir les tables logiques de la vue. Dans cette clause, vous pouvez :
Indiquer le nom de la table physique et un alias facultatif.
Identifiez les colonnes suivantes dans la table logique :
Les colonnes utilisées comme clés primaires.
Les colonnes qui contiennent des valeurs uniques (autres que les colonnes de clé primaire).
Vous pouvez utiliser ces colonnes pour définir les relations dans cette vue sémantique.
Ajouter des synonymes pour la table (afin d’améliorer la découvrabilité).
Ajouter un commentaire descriptif.
Dans l”exemple présenté plus haut, la clause TABLES définit trois tables logiques :
Une table
orderscontenant les informations sur les commandes de la table TPC-Horders.Une table
customerscontenant les informations sur les clients de la table TPC-Hcustomers.Une table
line_itemscontenant les lignes des commandes de la table TPC-Hlineitem.
L’exemple utilise la clause PRIMARY KEY pour identifier les colonnes à utiliser comme clés primaires pour chaque table logique. Les clés primaires et les valeurs uniques permettent de déterminer les types de relations entre les tables (par exemple, plusieurs à une ou une à une).
L’exemple fournit également des synonymes et des commentaires qui décrivent les tables logiques et facilitent la découverte des données.
Identifier les relations entre les tables logiques¶
Dans la commande CREATE SEMANTIC VIEW, utilisez la clause RELATIONSHIPS pour identifier les relations entre les tables de la vue. Pour chaque relation, vous spécifiez :
Un nom facultatif pour la relation
Le nom de la table logique contenant la clé étrangère
Les colonnes de cette table qui définissent la clé étrangère
Le nom de la table logique contenant la clé primaire ou les colonnes à valeurs uniques
Les colonnes de cette table qui définissent la clé primaire ou qui contiennent des valeurs uniques.
Si vous avez déjà spécifié PRIMARY KEY pour la table logique dans la clause TABLES, vous n’avez pas besoin de spécifier la colonne de clé primaire dans la relation.
S’il existe un seul mot-clé UNIQUE pour la table logique dans la clause TABLES, vous n’avez pas besoin de spécifier les colonnes correspondantes dans la relation.
Vous pouvez également spécifier une date, une heure, un horodatage ou une colonne numérique, si vous le souhaitez joindre les colonnes d’une plage.
Dans l”exemple présenté plus haut, la clause RELATIONSHIPS spécifie deux relations :
Une relation entre les tables
ordersetcustomers. Dans la tableorders,o_custkeyest la clé étrangère qui renvoie à la clé primaire de la tablecustomers(c_custkey).Une relation entre les tables
line_itemsetorders. Dans la tableline_items,l_orderkeyest la clé étrangère qui renvoie à la clé primaire de la tableorders(o_orderkey).
Utilisation d’une date, d’une heure, d’un horodatage ou d’une plage numérique pour joindre des tables logiques¶
Par défaut, lorsque vous spécifiez une relation entre deux tables logiques, les tables sont jointes selon une condition d’égalité.
Si vous devez joindre deux tables logiques sur une date, une heure, un horodatage ou une plage numérique (où les valeurs d’une colonne d’une table doivent se trouver dans la même plage que les valeurs d’une colonne d’une autre table), vous pouvez spécifier le mot clé ASOF avec le nom de colonne dans la clause REFERENCES :
Une requête de la vue sémantique définie ci-dessus produit une JOIN ASOF qui utilise l’opérateur de comparaison >= dans la clause MATCH_CONDITION. Ceci joint les deux tables de sorte que les valeurs de col_table_1 sont supérieures ou égales aux valeurs contenues dans la colonne col_table_2 :
Note
Aucun autre opérateur de comparaison de la clause MATCH_CONDITION n’est pris en charge.
Vous pouvez utiliser le mot clé ASOF pour les colonnes de mêmes types que vous pouvez utiliser avec une JOIN ASOF.
Note
Vous pouvez spécifier au maximum un mot clé ASOF dans la définition d’une relation donnée. Vous pouvez spécifier ce mot-clé avant n’importe quelle colonne de la liste.
Par exemple, supposons que vous ayez des tables contenant des données de client, d’adresse de client et de commande :
Dans cet exemple, la table customer_address possède une colonne ca_start_date, qui indique quand le client a commencé à résider à l’adresse spécifiée. La table orders possède une colonne o_ord_date, qui est la date de la commande.
Supposons que vous souhaitiez pouvoir interroger des informations sur les commandes des clients et récupérer les codes postaux correspondant à l’endroit où réside le client lorsque les commandes ont été passées.
Vous pouvez définir une vue sémantique qui spécifie une jointure ASOF entre les colonnes ca_start_date et o_ord_date :
Supposons que vous interrogiez cette vue sémantique pour renvoyer la somme des montants de commande par mois pour chaque code postal :
La requête utilise effectivement une JOIN ASOF pour joindre les tables sur les colonnes de date, où la date de la commande est supérieure ou égale à la date de début de l’adresse :
Jointure de tables logiques contenant des plages de valeurs¶
Vous pouvez utiliser une jointure de plage lorsque vous souhaitez joindre une table à une autre table qui définit une plage de valeurs possibles dans la première table. Par exemple, supposons qu’une table représente les commandes client et possède une colonne avec l’horodatage de la commande. Supposons qu’une autre table représente les trimestres fiscaux et contienne les différentes plages de temps qui représentent ces trimestres. Vous pouvez créer une vue sémantique qui joint les deux tables de sorte que la ligne d’une commande inclue le trimestre fiscal au cours duquel la commande a été passée.
Dans la table qui contient les plages, chaque plage doit être distincte. Deux plages ne peuvent pas se chevaucher.
Dans les données de la table, si vous souhaitez spécifier la valeur la plus faible possible pour la plage ou la valeur la plus élevée possible pour la plage, utilisez NULL.
Par exemple, le tableau suivant définit un ensemble de plages de temps qui ne se chevauchent pas :
La première ligne couvre la plage qui inclut tout jusqu’au (mais non compris) 1er janvier 2024.
La dernière ligne couvre la plage qui inclut tout à partir du 20 mars 2024.
Note
Il ne peut pas y avoir deux lignes contenant NULL dans la colonne de départ, ni deux lignes contenant NULL dans la colonne de fin.
Pour de tels cas, vous pouvez mettre en place une vue sémantique qui prend en charge les requêtes de jointure de plage. Lorsque vous créez la vue sémantique, vous devez effectuer les opérations suivantes :
Pour la table logique contenant les heures de début et de fin d’une période, définissez une contrainte qui spécifie que deux plages ne peuvent se chevaucher.
Dans la clause TABLE de la commande CREATE SEMANTIC VIEW, spécifiez la clause CONSTRAINT dans la définition de la table logique. Pour la syntaxe, consultez la documentation pourCONSTRAINT dans la rubrique CREATE SEMANTIC VIEW.
Définissez une relation entre la colonne contenant l’horodatage dans une table et les colonnes d’heure de début et de fin dans l’autre table.
Dans la clause RELATIONSHIPS de la commande CREATE SEMANTIC VIEW, utilisez la clause BETWEEN pour spécifier les colonnes contenant les heures de début et de fin. Pour la syntaxe, consultez la documentation pourRELATIONSHIP dans la rubrique CREATE SEMANTIC VIEW.
Par exemple, supposons que la table my_time_periods définit des périodes de temps distinctes :
Supposons que la table my_events capture les événements qui se sont produits au cours de ces périodes :
Vous pouvez définir une vue sémantique qui joint les tables. Les lignes dans my_events sont jointes à des lignes dans my_time_periods, où la valeur dans la colonne event_timestamp dans my_events se situe dans la plage spécifiée par les colonnes start_time et end_time dans my_time_periods.
La requête suivante montre comment les lignes sont jointes :
Comme le montrent les exemples, la dimension dim_time_period_name pour chaque ligne des résultats correspond au nom de la période à laquelle appartient la dimension dim_event_timestamp.
Définir les faits, les dimensions et les métriques¶
Dans la commande CREATE SEMANTIC VIEW, utilisez les clauses FACTS, DIMENSIONS et METRICS pour définir les faits, les dimensions et les métriques de la vue sémantique.
Vous devez définir au moins une dimension ou une métrique dans la vue sémantique.
Pour chaque fait, dimension ou métrique, vous spécifiez :
La table logique à laquelle il appartient
Note
Si vous souhaitez définir une métrique dérivée (une métrique qui n’est pas spécifique à une seule table logique), vous devez omettre le nom de la table logique. Voir Définition de métriques dérivées.
Un nom pour le fait, la dimension ou la métrique
L’expression SQL pour le calculer
Note
Pour les dimensions, vous pouvez spécifier un Cortex Search Service. Pour plus d’informations, voir Définir une dimension qui utilise un Cortex Search Service.
Des synonymes et commentaires facultatifs
Note
Si une métrique ne doit pas être agrégée selon des dimensions spécifiques, vous devez préciser que ces dimensions doivent être non additionnées.
Pour plus d’informations, voir Identification des dimensions qui doivent être non additionnées pour une métrique.
L”exemple présenté plus haut définit plusieurs faits, dimensions et mesures :
Note
Pour des directives supplémentaires sur la définition des métriques qui utilisent des fonctions de fenêtre, voir Définition et requête des métriques des fonctions de fenêtre.
Définir une dimension qui utilise un Cortex Search Service¶
Pour définir une dimension qui utilise un Cortex Search Service, définissez la clause WITH CORTEX SEARCH SERVICE sur le nom du Cortex Search Service. Si le service se trouve dans une base de données ou un schéma différent, qualifier le nom du service. Par exemple :
Définition de métriques dérivées¶
Lorsque vous définissez une métrique, vous spécifiez le nom de la table logique à laquelle appartient la métrique. Il s’agit de la table logique sur laquelle la métrique est agrégée.
Si vous souhaitez définir une métrique basée sur des métriques provenant d’autres tables logiques, vous pouvez définir une métrique dérivée. Une métrique dérivée est une métrique qui est liée à la vue sémantique (plutôt qu’à une table logique spécifique). Une métrique dérivée peut combiner des métriques provenant de plusieurs tables logiques.
Dans la définition d’une métrique dérivée, omettez le nom de la table logique.
Par exemple, supposons que vous souhaitiez définir une métrique my_derived_metric_1 qui est la somme des métriques table_1.metric_1 et table_2.metric_2. Lorsque vous définissez my_derived_metric_1, ne lui donnez pas le nom d’une table logique :
Vous pouvez utiliser d’autres métriques dérivées dans l’expression. Par exemple :
Notez les restrictions suivantes lorsque vous définissez une métrique dérivée :
Vous ne pouvez pas utiliser le même nom pour une métrique dérivée et une métrique ordinaire.
L’expression pour une métrique dérivée peut utiliser :
Agrégations de dimensions et de faits définis dans n’importe quelle table logique de la vue sémantique.
Expressions scalaires de métriques définies dans n’importe quelle table logique de la vue sémantique.
Autres métriques dérivées.
Dans l’exemple suivant :
derived_metric_1utilise une expression scalaire avec deux métriques.derived_metric_2utilise une agrégation d’une dimension.derived_metric_3ajoute une agrégation d’une dimension à une autre métrique dérivée.
Il n’est pas nécessaire d’utiliser le nom d’une métrique, d’une dimension ou d’un fait dans l’expression si le nom n’est pas ambigu. Par exemple :
Remarque : le nom de la
metric_1doit contenirtable_1, car il existe deux métriques nomméesmetric_1, maismy_unique_metric_namen’a pas besoin d’être utilisé, car le nom est unique.Dans l’expression d’une métrique dérivée, vous ne pouvez pas utiliser les éléments suivants :
Agrégations de métriques.
Des fonctions de fenêtre.
Références aux colonnes physiques.
Références à des faits ou à des dimensions qui ne sont pas agrégés.
Vous ne pouvez pas utiliser une métrique dérivée dans l’expression pour une métrique, une dimension ou un fait ordinaire. Seule une autre métrique dérivée peut utiliser une métrique dérivée dans son expression.
Spécification de la relation pour une métrique lorsqu’il existe plusieurs chemins de relation¶
Dans certains cas, il peut exister plusieurs chemins de relation entre deux tables logiques spécifiques dans une vue sémantique. Dans ces cas, lorsque vous définissez une métrique, vous devez spécifier le chemin de la relation à utiliser.
Problème lié à plusieurs chemins de relation¶
Supposons que vous ayez deux tables contenant des informations sur les vols et les aéroports :
Supposons que vous définissiez une vue sémantique fournissant des informations sur le nombre total de vols au départ et à destination d’une ville spécifique :
La vue sémantique spécifie deux relations différentes entre la table flights et la table airports (flight_departure_airport et flight_arrival_airport). Comme il existe plusieurs chemins de relations entre les tables, l’interrogation de la métrique m_flight_count et la sélection de la dimension airports.city_name (ou de toute dimension dans la table airports) échoue :
Comme il existe plusieurs chemins entre les tables flights et airports, la requête échoue. Si la requête n’avait pas sélectionné de dimension dans la table airports, la requête aurait abouti.
Spécification de la relation à utiliser¶
Dans la définition de la métrique dans la commande CREATE SEMANTIC VIEW, vous pouvez spécifier quelle relation utiliser dans la clause USING :
Note
Chaque relation que vous spécifiez doit commencer à partir de la table logique contenant la métrique. Par exemple, supposons que vous souhaitiez spécifier :
La relation
table_a_to_table_bdoit commencer par``table_a`` :Vous ne pouvez pas spécifier une séquence de relations (par exemple,
table_a_to_table_bettable_b_to_table_c). Chaque relation doit commencer à partir de la table logique contenant la métrique.Si vous devez identifier les relations de la table logique contenant la métrique avec différentes tables, vous pouvez spécifier les relations dans la clause USING. Par exemple, supposons que vous souhaitiez que la métrique soit calculée à partir de relations spécifiques entre
table_aettable_bet entretable_aettable_c. Dans ce cas, vous spécifiez les deux relations dans la clause USING :Vous ne pouvez pas spécifier la clause USING dans une métrique dérivée.
Par exemple, l’instruction suivante définit deux métriques supplémentaires qui utilisent des relations spécifiques :
m_flight_departure_count, qui utilise la relationflight_departure_airport.m_flight_arrival_count, qui utilise la relationflight_arrival_airport.
Lorsque vous interrogez cette vue, vous pouvez spécifier les deux nouvelles métriques qui utilisent des relations spécifiques :
Ajouter des dimensions qui reposent sur les mêmes relations¶
La requête de l’exemple précédent utilisait la dimension airports.city_name, qui se trouve dans la table logique airports sur laquelle les relations sont basées.
Si vous ajoutez une dimension pour une table logique différente à la vue, les requêtes de cette dimension bénéficient des relations que vous avez spécifiées précédemment.
Par exemple, supposons que vous créiez une table nommée regions avec des informations supplémentaires sur les régions des aéroports spécifiés dans la colonne airport_region_code de la table airports :
Vous pouvez étendre la vue sémantique que vous avez définie précédemment pour renvoyer le nom de la région :
Ajoutez une nouvelle table logique pour la table
regions.Ajoutez une relation entre les tables
regionsetairports.Ajoutez une dimension pour le nom de la région.
Vous n’avez pas besoin d’apporter des modifications supplémentaires à la clause USING pour les métriques, car il n’existe qu’une seule relation entre les tables regions et``airports``.
Si vous interrogez la vue, en spécifiant la dimension region_name, et qu’il existe une ambiguïté sur la relation à utiliser, la clause USING détermine les relations à utiliser :
Spécifier des relations avec différentes tables¶
Si la vue sémantique utilise des dimensions provenant de plusieurs tables et que vous devez spécifier les relations à utiliser pour ces dimensions, vous pouvez spécifier plusieurs relations dans la clause USING.
Par exemple, supposons que vous créiez une table nommée``weather`` avec des informations météorologiques sur les aéroports dans la table airports :
Vous pouvez étendre la vue sémantique que vous avez définie précédemment pour renvoyer la condition météorologique :
Ajoutez une nouvelle table logique pour la table
weather.Ajoutez deux relations entre les tables
weatheret``flights`` (une pour les vols de départ et une pour les vols d’arrivée).Ajoutez une dimension pour les informations météorologiques.
Spécifiez que les métriques doivent également utiliser les deux nouvelles relations entre les tables
weatheretflights.
Lorsque vous interrogez la vue et que vous spécifiez la dimension weather_condition, la clause USING détermine les relations utilisées :
Définir des métriques dérivées basées sur des métriques qui utilisent des relations spécifiques¶
Bien que vous ne puissiez pas spécifier la clause USING dans une métrique dérivée, vous pouvez définir une métrique dérivée qui utilise des métriques qui spécifient la clause USING.
Par exemple, la vue sémantique suivante définit deux métriques dérivées :
global_m_departure_arrival_ratioglobal_m_departure_arrival_sum
Les définitions de ces mesures dérivées utilisent les métriques flights.m_flight_departure_count et``flights.m_flight_arrival_count``, qui spécifient toutes les deux la clause USING :
Identification des dimensions qui doivent être non additionnées pour une métrique¶
Dans certains cas, une métrique ne doit pas être agrégée à travers des dimensions spécifiques. Dans ces cas-là, vous pouvez marquer les dimensions comme non additionnées.
Compréhension du problème lié à l’agrégation des métriques dans certaines dimensions¶
Supposons que vous disposiez d’une table contenant les soldes des comptes courants et d’épargne de chaque client un jour donné.
Supposons que vous souhaitiez définir une vue sémantique qui inclut :
Les dimensions suivantes :
ID client
Type de compte
Année
Mois
Jour
Une métrique pour la somme du solde.
L’instruction suivante crée une vue sémantique qui inclut les dimensions et les métriques répertoriées ci-dessus :
Si vous souhaitez récupérer le solde total des comptes courants et d’épargne pour chaque client à la fin de chaque année, vous pouvez interroger la vue sémantique pour la métrique m_account_balance et spécifier les dimensions customer_id_dim et year_dim.
Cependant, la métrique m_account_balance correspondra à la somme des soldes de chaque jour pour chaque client, car la métrique est agrégée par les dimensions de date.
Dans l’exemple ci-dessus, pour cust-001 en 2024, 910 est la somme des soldes pour chaque jour (100 + 110 + 140 + 150 + 200 + 210).
Prévention de l’agrégation d’une métrique à travers des dimensions spécifiques¶
Pour éviter que la métrique ne soit agrégée par les dimensions de date, spécifiez les dimensions de date dans la clause NON ADDITIVE BY lors de la création de la vue sémantique :
Note
Si vous spécifiez la clause NON ADDITIVE BY dans une métrique, vous ne pouvez pas faire référence à cette métrique dans les définitions des métriques qui ne sont pas dérivées. Seules les métriques dérivées peuvent faire référence aux métriques qui spécifient des dimensions non additionnées.
Spécifier la clause NON ADDITIVE BY fait de la métrique une métrique semi-additive.
Lorsque vous interrogez cette vue sémantique, la métrique m_account_balance n’est plus agrégée par les dimensions de date. La requête agrège les soldes des comptes à la fin de la période dans chaque groupe de dimensions interrogées.
Dans l’exemple ci-dessus, pour cust-001 en 2024, 210 correspond à la somme des soldes des comptes courants et d’épargne pour le dernier jour de l’année contenant des données :
Le dernier jour de 2024 contenant des données est
2024-03-30.Il n’existe pas de ligne à cette date pour le compte courant, de sorte que la métrique résultante correspond au solde du compte d’épargne (
210).
Autre exemple : si vous voulez simplement connaître le solde total des comptes pour tous les clients à la fin de l’année, vous pouvez spécifier la dimension year_dim.
Étant donné que les dimensions de date sont marquées comme non additionnées, la requête additionne les valeurs à la fin de la période (par date) pour les soldes des comptes courants et d’épargne de chaque client.
Pendant le traitement de la requête, les lignes sont triées par les dimensions non additionnées, et les valeurs des dernières lignes (les derniers instantanés des valeurs) sont agrégées pour calculer la métrique.
Note
Étant donné que les lignes sont triées par les dimensions non additionnées, l’ordre dans lequel vous spécifiez les dimensions est important. Ceci est similaire à l’ordre dans lequel vous spécifiez les colonnes dans la clause ORDER BY.
Spécification de l’ordre de tri pour les dimensions non additionnées¶
Comme montré dans l’exemple, la métrique agrège les valeurs des soldes courants et d’épargne pour chaque client à la fin d’une période. Si vous voulez modifier l’ordre de tri, vous pouvez spécifier le mot-clé ASC ou DESC à côté du nom de la dimension. Par exemple :
Dans cet exemple, la métrique est évaluée à la date la plus ancienne spécifiée par year_dim, month_dim et day_dim.
Si la dimension comprend des valeurs NULL, vous pouvez utiliser les mots-clés NULLS FIRST ou NULLS LAST pour spécifier si les valeurs NULL sont triées en premier ou en dernier dans les résultats :
Marquer un fait ou une métrique comme privé¶
Si vous définissez un fait ou un indicateur uniquement pour une utilisation dans les calculs de la vue sémantique et que vous ne souhaitez pas que le fait ou la métrique soit renvoyé dans une requête, vous pouvez spécifier le mot-clé PRIVATE pour marquer le fait ou la métrique comme privé. Par exemple :
Note
Vous ne pouvez pas marquer une dimension comme privée. Les dimensions sont toujours publiques.
Lorsque vous interrogez une vue sémantique comportant des faits ou des métriques privés, vous ne pouvez pas spécifier de fait ou de métrique privé dans les clauses suivantes :
La liste SELECT
FACTS dans la clause SEMANTIC_VIEW
METRICS dans la clause SEMANTIC_VIEW
METRICS
WHERE dans l’instruction SELECT ou la clause SEMANTIC_VIEW
Certaines commandes et fonctions incluent des faits et des métriques privés :
Les faits et les métriques privés apparaissent dans la sortie de la commande DESCRIBE SEMANTIC VIEW. Les lignes pour les faits et les métriques privés ont
PRIVATEdans la colonneaccess_modifier.Les faits et métriques privés sont répertoriés dans la valeur de retour d’un appel de fonction GET_DDL, comme indiqué dans Récupérer l’instruction SQL correspondant à une vue sémantique.
Certaines commandes et fonctions incluent des faits et des métriques privés uniquement dans des conditions spécifiques :
Les faits et les métriques privés sont répertoriés dans les vuesINFORMATION_SCHEMA SEMANTIC_FACTS et SEMANTIC_METRICS uniquement si vous utilisez un rôle qui s’est vu accorder le privilège REFERENCES ou OWNERSHIP sur la vue sémantique.
Sinon, ces vues ne répertorient que les faits et les métriques publics.
Les autres commandes et fonctions n’incluent pas de faits et de métriques privés :
Les faits privés n’apparaissent pas dans la sortie de la commande SHOW SEMANTIC FACTS.
Les métriques privées n’apparaissent pas dans la sortie de la commande SHOW SEMANTIC METRICS.
Fournir des instructions personnalisées pour Cortex Analyst¶
Dans une vue sémantique, vous pouvez fournir des instructions pour Cortex Analyst qui expliquent comment :
Générer l’instruction SQL
Classer les questions et demander des informations supplémentaires
Pour fournir ces instructions personnalisées, utilisez les clauses suivantes :
Pour obtenir des instructions sur la façon de générer l’instruction SQL, utilisez la clause AI_SQL_GENERATION dans la commande CREATE SEMANTIC VIEW.
Par exemple, pour demander à Cortex Analyst de générer l’instruction SQL de sorte que toutes les colonnes numériques soient arrondies à deux décimales, spécifiez ce qui suit :
Pour obtenir des instructions sur la manière de classer les questions, utilisez la clause AI_QUESTION_CATEGORIZATION.
Par exemple, pour demander à Cortex Analyst de rejeter les questions sur les utilisateurs, spécifiez ce qui suit :
Vous pouvez également fournir des instructions pour demander plus de détails, si la question n’est pas claire. Par exemple :
Création d’une vue sémantique à partir d’une spécification YAML¶
Pour créer une vue sémantique à partir d’une spécification YAML, vous pouvez appeler la procédure stockée SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML.
Tout d’abord, passez TRUE comme troisième argument pour vérifier que vous pouvez créer la vue sémantique à partir de la spécification YAML.
L’exemple suivant vérifie que vous pouvez utiliser une spécification de modèle sémantique donnée dans YAML pour créer une vue sémantique nommée tpch_analysis dans la base de données my_db et le schéma my_schema :
Si la spécification est valide, la procédure stockée renvoie le message suivant :
Si la syntaxe YAML n’est pas valide, la procédure stockée lève une exception. Par exemple, s’il manque un deux-points :
la procédure stockée lève une exception, indiquant que la syntaxe YAML n’est pas valide :
Si la spécification fait référence à une table physique qui n’existe pas, la procédure stockée lève une exception :
De même, si la spécification fait référence à une colonne de clé primaire qui n’existe pas, la procédure stockée lève une exception :
Vous pouvez ensuite appeler la procédure stockée sans transmettre le troisième argument pour créer la vue sémantique.
L’exemple suivant crée une vue sémantique nommée tpch_analysis dans la base de données my_db et le schéma my_schema :
Modification du commentaire d’une vue sémantique existante¶
Pour modifier le commentaire d’une vue sémantique existante, exécutez la commande ALTER SEMANTIC VIEW. Par exemple :
Note
Vous ne pouvez pas utiliser la commande ALTER SEMANTIC VIEW pour modifier des propriétés autres que le commentaire. Pour modifier d’autres propriétés de la vue sémantique, remplacez la vue sémantique. Voir Remplacer une vue sémantique existante.
Vous pouvez également utiliser la commande COMMENT pour définir un commentaire pour une vue sémantique :
Remplacer une vue sémantique existante¶
Pour remplacer une vue sémantique existante (par exemple, pour modifier la définition de la vue), indiquez OR REPLACE lors de l’exécution de CREATE SEMANTIC VIEW. Si vous souhaitez préserver les privilèges accordés à la vue sémantique existante, indiquez COPY GRANTS. Par exemple :
Lister les vues sémantiques¶
Pour répertorier les vues sémantiques du schéma actuel ou d’un schéma spécifié, exécutez la commande SHOW SEMANTIC VIEWS. Par exemple :
La sortie de la commande SHOW OBJECTS comprend des vues sémantiques. Dans la colonne kind, le type d’objet est répertorié comme VIEW. Par exemple :
Vous pouvez également interroger les vues sémantiques des schémas ACCOUNT_USAGE et INFORMATION_SCHEMA.
Liste des dimensions, faits et métriques¶
Pour répertorier les dimensions, les faits et les métriques disponibles dans une vue, un schéma, une base de données ou un compte, vous pouvez exécuter les commandes suivantes.
Par défaut, les commandes répertorient les dimensions ,les faits et les métriques disponibles dans les vues sémantiques définies dans le schéma actuel :
Les exemples suivants montrent comment dresser la liste des dimensions, des faits et des métriques pour des vues sémantiques dans différents champs d’application :
Répertorier les dimensions, les faits et les métriques dans les vues sémantiques de la base de données actuelle :
Répertorier les dimensions, les faits et les métriques dans les vues sémantiques d’un schéma ou d’une base de données spécifique :
Répertorier les dimensions, les faits et les métriques dans les vues sémantiques du compte :
Répertorier les dimensions, les faits et les métriques dans une vue sémantique spécifique :
Si vous interrogez une vue sémantique, vous pouvez utiliser la commande SHOW SEMANTIC DIMENSIONS FOR METRIC pour déterminer les dimensions que vous pouvez renvoyer lorsque vous spécifiez une métrique donnée. Pour plus de détails, voir Choix des dimensions que vous pouvez renvoyer pour une métrique donnée.
Lorsque vous exécutez la commande SHOW COLUMNS pour une vue sémantique, la sortie inclut les dimensions, les faits et les métriques de la vue sémantique. La colonne kind indique si la ligne représente une dimension, un fait ou une métrique.
Par exemple :
Afficher les détails d’une vue sémantique¶
Pour voir les détails d’une vue sémantique, exécutez la commande DESCRIBE SEMANTIC VIEW. Par exemple :
Récupérer l’instruction SQL correspondant à une vue sémantique¶
Vous pouvez appeler la fonction GET_DDL pour récupérer l’instruction DDL qui a créé une vue sémantique.
Note
Pour appeler cette fonction de vue sémantique, vous devez utiliser un rôle qui s’est vu accorder le privilège REFERENCES ou OWNERSHIP sur la vue sémantique.
Lorsque vous appelez GET_DDL, indiquez 'SEMANTIC_VIEW' comme type d’objet. Par exemple :
La valeur de retour comprend faits et métriques privés (faits et métriques qui sont marqués avec le mot-clé PRIVATE).
Obtenir la spécification YAML pour une vue sémantique¶
Pour obtenir la spécification YAML pour une vue sémantique, appelez la fonction SYSTEM$READ_YAML_FROM_SEMANTIC_VIEW.
L’exemple suivant renvoie la spécification YAML pour la vue sémantique nommée tpch_analysis dans la base de données my_db et le schéma my_schema :
Exportation d’une vue sémantique vers un fichier Source de données Tableau (TDS)¶
Pour exporter une vue sémantique vers un fichier Source de données Tableau (TDS), appelez la fonction SYSTEM$EXPORT_TDS_FROM_SEMANTIC_VIEW.
L’exemple suivant renvoie le contenu du fichier TDS pour la vue sémantique my_sv_for_export :
Copiez le XML vers un fichier .tds et ouvrez le fichier dans Tableau Desktop.
Tableau Desktop affiche un dossier pour chaque table logique dans la liste des dossiers à gauche. Les noms des dossiers utilisent des espaces à la place des traits de soulignement, et chaque mot commence par une lettre majuscule. Par exemple, le nom de dossier de la table logique date_dim est Date Dim.
Chaque dossier contient des dimensions et des mesures Tableau qui correspondent aux dimensions, aux faits et aux métriques de la vue sémantique.
Les sections suivantes fournissent plus de détails et présentent les limites du processus de conversion :
À propos de la conversion¶
La fonction convertit les dimensions, les faits et les métriques de la vue sémantique en équivalents suivants dans le fichier Tableau TDS :
Élément dans la vue sémantique |
Équivalent Tableau (dimension ou mesure) |
Fonctionnement de l’agrégation des données |
|---|---|---|
Dimension |
|
|
Fait numérique |
Mesure |
SUM |
Fait non numérique |
Dimension |
|
Métrique numérique |
Mesure |
Le fichier TDS utilise un champ calculé à la place de la métrique. Le champ calculé transmet la valeur de la métrique à la fonction Snowflake AGG. |
Métrique non numérique |
Dimension |
|
Métrique dérivée numérique |
Mesure |
Le fichier TDS utilise un champ calculé à la place de la métrique. Le champ calculé transmet la valeur de la métrique à la fonction Snowflake AGG. |
Métrique dérivée non numérique |
Dimension |
|
Les types de données Snowflake suivants sont mappés aux types de données Tableau TDS :
Type de données Snowflake |
Type de données Tableau équivalent |
|---|---|
NUMBER/FIXED (si l’échelle est supérieure à 0) |
real |
NUMBER/FIXED (si l’échelle est de 0 ou nulle) |
entier |
FLOAT ou DECFLOAT |
real |
STRING ou BINARY |
string |
BOOLEAN |
booléen |
TIME |
time |
DATE |
date |
DATETIME ou TIMESTAMP |
datetime |
GEOGRAPHY |
spatial |
Semi-structuré (VARIANT, OBJECT, ARRAY), structuré (ARRAY, OBJECT, MAP), non structuré (FILE), GEOMETRY, UUID, VECTOR |
string |
Le fichier TDS présente les capacités suivantes personnalisées pour la connexion à Snowflake :
Nom de la personnalisation |
Valeur |
Effet de la personnalisation |
|---|---|---|
|
|
Empêche Tableau d’exécuter effectivement une requête comme:samp: |
|
|
Empêche Tableau de « préparer » une instruction (c’est-à-dire de l’envoyer à Snowflake pour qu’elle soit analysée sans être exécutée) pour identifier les types. |
|
|
Empêche Tableau d’utiliser une requête |
|
|
Force Tableau à activer et à utiliser la fonction standard ODBC:code: |
|
|
Empêche Tableau d’échapper les traits de soulignement lors de la recherche du nom de la base de données. |
Limites de l’utilisation d’une vue sémantique dans Tableau Desktop¶
Les limites suivantes s’appliquent aux vues sémantiques dans Tableau Desktop :
Vous ne pouvez pas créer un extrait à partir d’une vue sémantique.
Si vous modifiez votre connexion depuis Live dans:extui:
Extract, Tableau Desktop échoue avec l’erreur suivante :Vous ne pouvez pas utiliser le champ Measure Values dans une vue sémantique.
Si vous sélectionnez le champ Measure Values dans une vue sémantique, Tableau Desktop signale l’erreur suivante :
Vous ne pouvez pas sélectionner le champ Count dans une vue sémantique.
Si vous sélectionnez SemanticViewName(Count), Tableau Desktop signale l’erreur suivante :
Tableau Desktop ne peut pas signaler le nombre de lignes dans la vue sémantique, car le nombre de lignes peut varier, en fonction des dimensions, des faits et des métriques spécifiés dans la requête.
Vous ne pouvez pas faire glisser une mesure seule.
Si vous faites glisser une mesure, Tableau Desktop signale l’erreur suivante :
Vous ne pouvez pas utiliser directement une métrique non numérique.
SYSTEM$EXPORT_TDS_FROM_SEMANTIC_VIEW convertit les métriques non numériques en dimensions dans Tableau. Si vous tentez d’utiliser l’une de ces dimensions, Tableau Desktop signale l’erreur suivante :
Pour contourner ce problème, convertissez la dimension en mesure :
Effectuez un clic droit sur la dimension et sélectionnez Convert to Measure.
Ceci convertit la dimension en mesure, en utilisant l’agrégation Count (Distinct) par défaut.
Pour utiliser une agrégation différente, effectuez un clic droit sur la mesure convertie, sélectionnez Default Properties » Aggregations, puis sélectionnez l’agrégation que vous souhaitez utiliser.
Renommer une vue sémantique¶
Pour renommer une vue sémantique, exécutez ALTER SEMANTIC VIEW … RENAME TO …. Par exemple :
Supprimer une vue sémantique¶
Pour supprimer une vue sémantique, exécutez la commande DROP SEMANTIC VIEW. Par exemple :
Octroyer des privilèges sur des vues sémantiques¶
Privilèges de la vue sémantique liste les privilèges que vous pouvez accorder à une vue sémantique.
Pour travailler avec une vue sémantique, vous devez obligatoirement disposer des privilèges suivants sur cette vue :
Tout privilège (par exemple, MONITOR, REFERENCES ou SELECT) sur une vue est nécessaire pour exécuter la commande DESCRIBE SEMANTIC VIEW sur cette vue.
Tout privilège sur une vue est nécessaire pour afficher cette vue dans la sortie de la commande SHOW SEMANTIC VIEWS.
SELECT est nécessaire pour interroger la vue sémantique.
Note
Pour interroger une vue sémantique, vous n’avez pas besoin du privilège SELECT sur les tables utilisées dans la vue sémantique. Vous n’avez besoin que du privilège SELECT sur la vue sémantique elle-même.
Ce comportement est cohérent avec les privilèges requis pour interroger les vues standard.
Pour utiliser une vue sémantique dont vous n’êtes pas propriétaire dans Cortex Analyst, vous devez utiliser un rôle qui possède les privilèges REFERENCES et SELECT sur cette vue.
Pour accorder les privilèges REFERENCES et SELECT sur une vue sémantique, utilisez la commande GRANT <privilèges> … TO ROLE. Par exemple, pour accorder au rôle my_analyst_role des privilèges REFERENCES et SELECT sur la vue sémantique nommée my_semantic_view, vous pouvez exécuter l’instruction suivante :
Si vous disposez d’un schéma contenant des vues sémantiques que vous souhaitez partager avec les utilisateurs de Cortex Analyst, vous pouvez utiliser des autorisations futures pour accorder les privilèges sur toute vue sémantique que vous créez dans ce schéma. Par exemple :