Vider une entité Master Data Services

Bon un petit post rapide pour un truc tout bête: comment vider une entité dans MDS. La technique la plus simple que je connaisse est de déverser le contenu d’une vue de souscription dans la table de staging, avec un marqueur de suppression.

Lorsque l’on insère dans la table de staging feuille d’une entité – en général pour ajouter de nouveaux membres dedans – on doit renseigner plusieurs choses obligatoiremement (dans la table Entity Based, ce qui est une nouveauté 2012 rappelons le, ces champs sont marqués NOT NULL):

  • Le statut d’import ImportStatus_ID (généralement 0, qui signifie « à traiter »)
  • Le Code du membre à traiter
  • Le marqueur ImportType qui détermine ce que le processus doit faire avec cette ligne. Ses valeurs vont de 0 à 6 et signifient:
    • O : « Créer un nouveau membre si le Code n’existe pas, mettre à jour le membre s’il existe mais uniquement si les valeur de propriétés ne sont pas nulles »
    • 1 : « Créer un nouveau membre si le Code n’existe pas, lever une erreur s’il existe. »
    • 2 : « Créer un nouveau membre si le Code n’existe pas,  mettre à jour le membre s’il existe. »
    • 3 : « Désactiver le membre, lever une erreur s’il est référencé par un membre d’une autre entité. »
    • 4 : « Supprimer le membre, lever une erreur s’il est référencé par un membre d’une autre entité. »
    • 5 : « Désactiver le membre. Les colonnes de référence passent à NULL s’il est référencé par une autre entité. »
    • 6 : « Supprimer le membre. Les colonnes de référence passent à NULL s’il est référencé par une autre entité. »
  • Un nom de Batch pour la ligne, nommé BatchTag

Pour supprimer un membre de manière définitive, il suffit de le réinsérer dans le Staging avec un ImportType à 4 ou 6 et d’envoyer la procédure de staging:


DECLARE @VersionName NVARCHAR(50) = 'VERSION_1'
DECLARE @BatchTag NVARCHAR(50) = 'Deletion'

INSERT stg.Entity_Leaf
(
   ImportStatus_ID,
   ImportType,
   Code,
   BatchTag
)
SELECT 0, 6, Code, @BatchTag
FROM mdm.SubscriptionView

EXECUTE stg.udp_Entity_Leaf
      @VersionName = @VersionName,
      @LogFlag = 1,
      @BatchTag = @BatchTag

Voilà un truc simple et rapide :)!
A bientôt!

2 réflexions sur “Vider une entité Master Data Services

  1. Salut,

    Un truc tout bête auquel j’avais pas pensé et qui tombe pile poil au moment où je me creuse la tête pour vider mes 50 entités dans MDS!

    Merci beaucoup!

    Sonia

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s