Aller au menu Aller au contenu

Par Gaël Baudry, Conseiller principal, Analytiques des données
avec la contribution de Maxime Fargeot, Conseiller principal, Analytiques des données 

Depuis le mois de juillet 2021, Snowflake propose des fonctionnalités de tagging (ou balisage en bon français). Merveilleux ! Une nouvelle fonctionnalité ! Mais qu’est-ce que c’est au juste, comme ça marche, à quoi elle pourrait bien servir ? Cet article va tenter de démystifier ce concept, en montrant quelques applications concrètes qu’il pourrait apporter.

Taguer, qu’est-ce que c’est ?

Que ce soit dans la vie courante ou dans la vie numérique, taguer réfère bien souvent à une notion de marquage, d’étiquetage, ou encore d’identifier quelqu’un ou quelque chose.

Le tagging ou balisage

Un tag de rue, contrairement à un graffiti à vocation plus artistique, est généralement destiné à marquer un territoire, par le biais de la signature de son auteur. Il y a une notion d’information. Il s’agit de marquer son empreinte. Sur les réseaux sociaux, taguer un ami sous une publication, c’est le marquer afin qu’il réponde éventuellement, là encore, il s’agit d’ajouter une information supplémentaire à un objet.

Dans Snowflake, taguer un objet signifie également le marquer, en lui assignant des informations supplémentaires. Un tag est un objet de niveau schéma descriptif, qui peut être associé à un autre objet Snowflake.

Le tag est stocké sous forme d’une paire clé-valeur. La clé est unique et la valeur est une chaîne de caractères. Les types d’objets suivants peuvent être marqués par des  tags :

–        Objets au niveau du compte.
–        Objets au niveau de la base de données.
–        Objets de niveau schéma.
–        Colonnes d’une table ou d’une vue.

Ainsi, il est très facile de définir une collection d’informations – les tags – pour des tables et colonnes notamment. On pourrait imaginer :

–        Un tag “centre de coût” avec comme valeur ‘marketing’, ‘finance’, ‘ventes’.
–        Un tag “source données” avec comme valeur le nom d’une autre table source.
–        Un tag “sensibilité” avec comme valeur “aucune”, “confidentiel”, qui pourrait être utilisé en support à des politiques de gouvernance.

Les possibilités sont très grandes, soyons créatifs !

Comment ça fonctionne dans Snowflake?

Lorsque l’on définit un tag, on peut le rattacher à un objet dans Snowflake. La hiérarchie des objets dans Snowflake fait que la valeur du tag est héritée à tous les sous-objets.

Comment fonctionnent les tags dans Snowflakes

Source: https://docs.snowflake.com/en/user-guide/object-tagging.html

Techniquement, définir un tag consiste à faire un CREATE TAG <nom_tag>. Associer un tag à un objet, consiste à faire un ALTER <type_d’objet> <mon_objet> set tag <nom_tag> = <valeur_tag>. Si on a plusieurs tags, on peut les associer en une seule commande très simplement.

// Création de 2 tags
create tag departement;
create tag sensibilite;

// Création d’une table employe
create table employe
(
nom varchar
,prenom varchar
,nas varchar
);

// On assigne au tag “departement” la valeur “RH” pour la table employe
alter table employe set tag departement=’RH’;

// On assigne au tag “sensibilite” la valeur “confidentiel” pour la colonne “NAS” de la table “employe”
alter table employe modify column nas set tag sensibilite=’confidentiel’;

Et pourquoi ne pas utiliser tout simplement les commentaires ?

Un élément ressemble fortement aux tags : il s’agit du commentaire. Mais contrairement aux tags, le commentaire a une limite plutôt importante : il est unique pour chaque objet. Alors que l’on peut définir une multitude de tags pour nos objets Snowflake, on est limité à un seul commentaire.

A quoi ça peut servir tout ça au final ?

Les tags peuvent avoir plusieurs utilités. Ils peuvent nous permettre d’être capables de faire des recherches dans le catalogue d’objets Snowflake pour trouver très rapidement certaines informations.

Gouvernance de données

Dans ce contexte, imaginons quelques scénarii d’utilisation :

Sécurité

Dans un contexte de gouvernance des données, il est envisageable d’apposer des tags aux colonnes de tables contenant par exemple des données sensibles. Ainsi balisées, elles deviennent facilement identifiables au moment de définir et d’associer des politiques de sécurité appropriées (cf. Doc dans Balisage d’objets — Snowflake Documentation concernant les politiques de masquage). Selon le rôle des différents utilisateurs, il est alors possible d’afficher en clair ou non ces colonnes.

Une autre utilisation des tags serait de les utiliser dans le contexte des warehouses. Cela permet de les classifier par secteur d’affaires par exemple, pour facilement identifier les coûts associés. Ce type d’usage ressemble beaucoup à l’utilisation de tags de ressources cloud chez AWS, Azure et GCP.

Classification de l’information

On peut également utiliser les tags pour classifier de l’information.
Dans l’idéal, une base de données devrait comporter des noms pertinents pour ses tables, schémas, et divers objets. On pourrait alors considérer que c’est la première façon la plus naturelle de classer des informations. Par exemple, des schémas par domaine métier de l’entreprise.

Mais il est courant qu’une table ne se cantonne pas, à l’utilisation initiale qu’on lui avait donnée lors de sa création. C’est lorsque cette classification naturelle pose des limites que des tags vont devenir intéressants. Les tags sont transversaux et héritables. Cela apporte une flexibilité permettant de faire des recherches sur des objets sans qu’ils soient naturellement connectés entre eux.

Stocker des informations facilitant le contrôle des données

Dans un contexte un peu différent, les tags peuvent nous aider à stocker de l’information de type métadonnée pour les tables et les colonnes. Dans le cadre d’un ETL, on pourrait imaginer pouvoir stocker le nom de la table source d’information d’une autre table. Ces informations peuvent nous permettre par exemple de créer des requêtes dynamiques de contrôle de cohérence des données.

Pour conclure, les tags sont des outils de marquage puissants. Leur utilisation peut nous permettre un éventail de possibilités, comme faire des recherches au travers des objets Snowflake. Si l’utilisation des tags apporte une réelle valeur ajoutée dans des scénarii de gouvernance des données, il faut toutefois les utiliser avec parcimonie et rester simple. Comme tout outil de gestion des métadonnées, les tags devront être maintenus et mis à jour dans le temps, ce qui apporte une charge de travail supplémentaire.

Les tags peuvent réellement être utiles, reste à ne pas les surutiliser, en ajoutant une couche de complexité inutile. Si on crée des tags pour le plaisir d’en créer, en se disant que cela pourra servir plus tard, autant s’abstenir!

Vous avez des questions?

Écrivez-nous