CREATE DATA METRIC FUNCTION

Crée une nouvelle fonction de métrique des données (DMF) dans le schéma actuel ou spécifié, ou remplace une fonction de métrique des données existante.

Après avoir créé une DMF, appliquez-la à une colonne de table en utilisant une commande ALTER TABLE … ALTER COLUMN ou à une colonne de vue en utilisant la commande ALTER VIEW.

Cette commande prend en charge les variantes suivantes :

Voir aussi :

Référence des commandes de DMF, CREATE OR ALTER <objet>

Syntaxe

CREATE [ OR REPLACE ] [ SECURE ] DATA METRIC FUNCTION [ IF NOT EXISTS ] <name>
  ( <table_arg> TABLE( <col_arg> <data_type> [ , ... ] )
    [ , <table_arg> TABLE( <col_arg> <data_type> [ , ... ] ) ] )
  RETURNS NUMBER [ [ NOT ] NULL ]
  [ LANGUAGE SQL ]
  [ COMMENT = '<string_literal>' ]
  AS
  '<expression>'
Copy

Syntaxe des variantes

CREATE OR ALTER DATA METRIC FUNCTION

Crée une nouvelle fonction de métrique des données si elle n’existe pas encore, ou modifie une fonction de métrique des données existante en fonction définie dans l’instruction. Une instruction CREATE OR ALTER DATA METRIC FUNCTION suit les règles syntaxiques d’une instruction CREATE DATA METRIC FUNCTION et présente les mêmes limitations qu’une instruction ALTER FUNCTION (DMF).

Contrairement à une commande CREATE OR REPLACE DATA METRIC FUNCTION, une commande CREATE OR ALTER met à jour l’objet sans le supprimer ni le recréer.

Les modifications de fonctions prises en charge comprennent les changements apportés à la propriété COMMENT.

Pour plus d’informations, voir Notes sur l’utilisation de CREATE OR ALTER DATA METRIC FUNCTION.

CREATE [ OR ALTER ] DATA METRIC FUNCTION ...
Copy

Paramètres requis

name

Identificateur de la DMF ; doit être unique pour votre schéma.

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.

( table_arg TABLE( col_arg data_type [ , ... ] ) [ , table_arg TABLE( col_arg data_type [ , ... ] ) ] )

Signature de la DMF, qui sert d’entrée à l’expression.

Vous devez spécifier :

  • Un nom d’argument pour chaque table (table_arg).

  • Pour chaque table, un nom d’argument pour au moins une colonne, ainsi que son type de données (col_arg data_type).

    Vous pouvez éventuellement spécifier des arguments pour des colonnes supplémentaires et leurs types de données. Les colonnes doivent se trouver dans la même table et ne peuvent pas faire référence à une autre table.

RETURNS NUMBER

Le type de données de la sortie de la fonction.

Le type de données ne peut être que NUMBER.

AS expression

Expression SQL qui détermine la sortie de la fonction. L’expression doit être déterministe et renvoyer une valeur scalaire. L’expression peut faire référence à d’autres objets de table, par exemple en utilisant une clause WITH ou une clause WHERE.

Les délimiteurs autour de la expression peuvent être des guillemets simples ou une paire de signes dollar. L’utilisation de $$ comme délimiteur facilite l’écriture d’expressions contenant des guillemets simples.

Si le délimiteur de expression est le caractère de guillemet simple, tous les guillemets simples au sein de expression (par exemple, les littéraux de chaîne) doivent faire l’objet d’un échappement via des guillemets simples.

expression ne prend pas en charge les actions suivantes :

  • Utilisation de fonctions non déterministes (par exemple, CURRENT_TIME).

  • Référencement d’un objet dépendant d’une UDF ou d’une UDTF.

  • Renvoi d’une sortie non scalaire.

Paramètres facultatifs

SECURE

Spécifie que la fonction de métrique des données est sécurisée. Pour plus d’informations, voir Protection des informations sensibles avec les UDFs et les procédures stockées sécurisées.

LANGUAGE SQL

Spécifie la langue utilisée pour écrire l’expression.

SQL est la seule langue prise en charge.

COMMENT = 'string_literal'

Un commentaire pour la DMF.

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 DATA METRIC FUNCTION

Schéma

Le privilège permet uniquement la création de fonctions de métriques des données dans le schéma.

Si vous souhaitez activer la création de fonctions définies par l’utilisateur, telles que SQL ou les UDFs Java, le rôle doit avoir le privilège CREATE FUNCTION.

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 générales sur l’utilisation

  • Si vous souhaitez mettre à jour une fonction de métrique des données existante et si vous avez besoin de voir la définition actuelle de la fonction, exécutez la commande DESCRIBE FUNCTION (DMF) ou appelez la fonction GET_DDL.

  • 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.

Notes sur l’utilisation de CREATE OR ALTER DATA METRIC FUNCTION

  • Les modifications suivantes ne sont pas prises en charge :

    • Changement du corps de la fonction de métrique des données.

    • Modification de la métrique des données et de la définition de la table d’entrée.

Exemple : argument de table unique

Créer une DMF qui appelle la fonction COUNT pour renvoyer le nombre total de lignes contenant des nombres positifs dans les trois premières colonnes de la table :

CREATE OR REPLACE DATA METRIC FUNCTION governance.dmfs.count_positive_numbers(
  arg_t TABLE(
    arg_c1 NUMBER,
    arg_c2 NUMBER,
    arg_c3 NUMBER
  )
)
RETURNS NUMBER
AS
$$
  SELECT
    COUNT(*)
  FROM arg_t
  WHERE
    arg_c1>0
    AND arg_c2>0
    AND arg_c3>0
$$;
Copy

Exemple : arguments de table multiples

Renvoie le nombre d’enregistrements dans lesquels la valeur d’une colonne d’une table n’a pas de valeur correspondante dans la colonne d’une autre table :

CREATE OR REPLACE DATA METRIC FUNCTION governance.dmfs.referential_check(
  arg_t1 TABLE (arg_c1 INT), arg_t2 TABLE (arg_c2 INT))
RETURNS NUMBER
AS
$$
  SELECT
    COUNT(*)
    FROM arg_t1
  WHERE
    arg_c1 NOT IN (SELECT arg_c2 FROM arg_t2)
$$;
Copy

Pour un exemple qui utilise cette DMF pour valider l’intégrité référentielle, voir Exemple : Utilisation de plusieurs arguments de table pour effectuer des contrôles de référence.

Exemple : modifier une fonction de métrique des données à l’aide de la commande CREATE OR ALTER DATA METRIC FUNCTION

Modifie la fonction de métrique de données à table unique créée dans l’exemple ci-dessus pour définir la sécurité et le commentaire.

CREATE OR ALTER SECURE DATA METRIC FUNCTION governance.dmfs.count_positive_numbers(
  arg_t TABLE(
    arg_c1 NUMBER,
    arg_c2 NUMBER,
    arg_c3 NUMBER
  )
)
RETURNS NUMBER
COMMENT = "count positive numbers"
AS
$$
  SELECT
    COUNT(*)
  FROM arg_t
  WHERE
    arg_c1>0
    AND arg_c2>0
    AND arg_c3>0
$$;
Copy