Mise à jour partielle de masse d'enregistrements de données MDM via l'API REST

author
Talend Documentation Team
EnrichVersion
6.5
EnrichProdName
Talend Data Fabric
Talend MDM Platform
task
Gouvernance de données > Consolidation de données
EnrichPlatform
Talend MDM Server

Mise à jour partielle de masse d'enregistrements de données MDM via l'API REST

Dans le MDM de Talend, au lieu de mettre à jour les enregistrements de données un par un, il est possible de mettre à jour un ou plusieurs champs de plusieurs enregistrements de données appartenant à une même entité, en une fois.

Une interface REST MDM est disponible pour vous permettre d'effectuer la mise à jour partielle des enregistrements en une opération de masse via l'API REST.

Cet article s'applique à tous les produits Talend Platform avec MDM, versions 6.3.1 et supérieures.

API REST pour les mises à jour partielles de masse

Mise à jour partielle de nombreux enregistrements appartenant à une entité, en une opération de masse.

Notez que l'opération partielle de masse n'invoque pas de processus Before-Saving.

Requête

PATCH /services/rest/data/{containerName}/{entity}/bulk

URL de la requête

http://{serverurl}/talendmdm/services/rest/data/{containerName}/{entity}/bulk

Paramètres de la requête

  • containerName : Valeur String spécifiant le nom du conteneur de données dans lequel effectuer l'opération de mise à jour partielle de masse.
  • entity : Valeur String représentant l'entité sur laquelle effectuer la mise à jour partielle de masse.

En-têtes

  • Content-Type : application/xml
  • Authorization : schéma d'authentification basique (basic)

Corps de la requête

Représentation XML des enregistrements qui seront utilisés pour mettre à jour partiellement les enregistrements de données existants.

Chaque enregistrement contient :

  • un ou plusieurs champs de clé primaires avec des valeurs, obligatoires car elles seront utilisées pour spécifier l'enregistrement à mettre à jour,
  • un nombre arbitraire d'autres champs, avec des valeurs qui seront utilisées pour mettre à jour les champs existants.

Exemple :

<records>
  <Product>
    <Id>1</Id>
    <Name>New Name</Name>
    <Price>30</Price>
  </Product>
  <Product>
    <Id>2</Id>
    <Name>New Name2</Name>
  </Product>
</records>

Corps de la réponse

Aucun contenu.

Code de réponse

  • 200 OK : indique que tous les enregistrements spécifiés ont bien été mis à jour.
  • 403 FORBIDDEN : indique que les utilisateurs n'ont pas les droits d'accès en lecture ou en écriture sur le conteneur ou l'entité spécifié(e).
  • 400 Bad Request : indique que l'opération de mise à jour partielle de masse a échoué. Les causes peuvent être les suivantes :
    • le nom du conteneur spécifié dans l'URL de la requête est différent de celui de l'entité fournie dans le corps de la requête.
    • il n'y a pas de champ de clé primaire dans le corps de la requête.
    • il n'y a pas de valeur de clé primaire dans le corps de la requête.
    • un ou plusieurs enregistrements spécifiés dans le corps de la requête n'existent pas.
    • la valeur est manquante pour un ou plusieurs champs obligatoires dans le corps de la requête.
    • des enregistrements de données invalides existent dans le corps de la requête.
Avertissement : Si vous n'avez pas les droits d'accès en écriture aux champs spécifiés, l'opération de mise à jour partielle de masse continue son traitement des autres champs sans retourner d'exception. Cependant, vous pouvez lire le message d'erreur dans le fichier de log MDM. Par exemple, l'utilisateur 'user' n'est pas autorisé à effectuer l'opération suivante : update field (mettre à jour le champ) 'Description' de type 'Product'.

Exemples : Mise à jour partielle de champs de type simple ou de champs multi-occurrence de différents enregistrements de données via l'API REST

Ces exemples vous montrent comment fournir un corps de requête correct pour mettre à jour partiellement des champs de type simple ou de champs multi-occurrence de plusieurs enregistrements de données, via l'API REST.

Dans ces exemples, les enregistrements de données à mettre à jour appartiennent à l'entité Product du modèle de données Product, dans le projet démo MDM, comme affiché ci-dessous.

<Product>
  <Id>1</Id>
  <Name>Book</Name>
  <Description>Harry</Description>
  <Features>
    <Sizes/>
    <Colors/>
  </Features>
  <Price>10.00</Price>
  <Stores/>
</Product>
<Product>
  <Id>2</Id>
  <Name>Book</Name>
  <Description>Harry Potter</Description>
  <Features>
    <Sizes/>
    <Colors/>
  </Features>
  <Price>20.00</Price>
  <Stores/>
</Product>
<Product>
  <Id>3</Id>
  <Name>Book</Name>
  <Description>Harry Potter Series</Description>
  <Features>
    <Sizes>
      <Size>Large</Size>
      <Size>X-Large</Size>
    </Sizes>
    <Colors>
      <Color>Light Pink</Color>
    </Colors>
  </Features>
  <Price>30.00</Price>
  <Stores/>
</Product>

Avant d'effectuer une mise à jour partielle, vérifiez que :

  • le Talend MDM Server est en cours de fonctionnement.
  • le projet démo MDM a bien été importé et déployé sur le Talend MDM Server.
  • les enregistrements de données mentionnés ci-dessus existent déjà.

Mise à jour partielle de champs de type simple de différents enregistrements de données

Corps de la requête

Pour mettre à jour les valeurs les champs de type simple (Name, Description et Price dans cet exemple) dans les trois enregistrements de données Product, vous devez envoyer les informations de mise à jour suivantes dans le corps de la requête :

<records>
  <Product>
    <Id>1</Id>
    <Name>The first book</Name>
    <Description>Harry Potter and the Philosopher’s Stone</Description>
    <Price>111</Price>
  </Product>
  <Product>
    <Id>2</Id>
    <Name>The second book</Name>
    <Description>Harry Potter and the Chamber of Secrets</Description>
    <Price>222</Price>
  </Product>
  <Product>
    <Id>3</Id>
    <Name>The third book</Name>
    <Description>Harry Potter and the Prisoner of Azkaban</Description>
    <Price>333</Price>
  </Product>
</records>

Résultats

Une fois la mise à jour partielle de masse terminée, les enregistrements mis à jour doivent ressembler à ceci:

<Product>
  <Id>1</Id>
  <Name>The first book</Name>
  <Description>Harry Potter and the Philosopher’s Stone</Description>
  <Features>
    <Sizes/>
    <Colors/>
  </Features>
  <Price>111.00</Price>
  <Stores/>
</Product>
<Product>
  <Id>2</Id>
  <Name>The second book</Name>
  <Description>Harry Potter and the Chamber of Secrets</Description>
  <Features>
    <Sizes/>
    <Colors/>
  </Features>
  <Price>222.00</Price>
  <Stores/>
</Product>
<Product>
  <Id>3</Id>
    <Name>The third book</Name>
    <Description>Harry Potter and the Prisoner of Azkaban</Description>
    <Features>
    <Sizes>
      <Size>Large</Size>
      <Size>X-Large</Size>
    </Sizes>
    <Colors>
      <Color>Light Pink</Color>
    </Colors>
  </Features>
  <Price>333.00</Price>
  <Stores/>
</Product>

Mise à jour partielle de champs multi-occurrence de différents enregistrements de données

Corps de la requête

Pour mettre à jour les valeurs des champs multi-occurrence (Size et Color dans cet exemple) dans deux enregistrements de données Product d'ID 1 et Id 2, envoyez les informations de mise à jour suivantes dans le corps de la requête :

<records>
  <Product>
    <Id>1</Id>
    <Features>
      <Sizes>
        <Size>Small</Size>
        <Size>Medium</Size>
      </Sizes>
      <Colors>
        <Color>White</Color>
        <Color>Light Blue</Color>
      </Colors>
    </Features>
  </Product>
  <Product>
    <Id>2</Id>
    <Features>
      <Sizes>
        <Size>Small</Size>
      </Sizes>
      <Colors>
        <Color>Lemon</Color>
      </Colors>
    </Features>
  </Product>
</records>

Résultats

Une fois la mise à jour partielle de masse terminée, les enregistrements mis à jour doivent ressembler à ceci :

<Product>
  <Id>1</Id>
  <Name>Book</Name>
  <Description>Harry</Description>
  <Features>
    <Sizes>
      <Size>Small</Size>
      <Size>Medium</Size>
    </Sizes>
    <Colors>
      <Color>White</Color>
      <Color>Light Blue</Color>
    </Colors>
  </Features>
  <Price>10.00</Price>
  <Stores/>
</Product>
<Product>
  <Id>2</Id>
  <Name>Book</Name>
  <Description>Harry Potter</Description>
  <Features>
    <Sizes>
      <Size>Small</Size>
    </Sizes>
    <Colors>
      <Color>Lemon</Color>
    </Colors>
  </Features>
  <Price>20.00</Price>
  <Stores/>
</Product>

Exemples : suppression des valeurs d'un champ multi-occurrence via l'API REST

Ces exemples vous présentent comment fournit le corps de requête correct pour effacer les valeurs d'un champ multi-occurrence via l'API REST.

Dans ces exemples, les enregistrements de données suivants seront mis à jour :

<Company>
  <CompanyId>DStar</CompanyId>
  <Subsidiaries>S_Beijing</Subsidiaries>
  <Subsidiaries>S_Shanghai</Subsidiaries>
  <Branches>
    <Office1>Large</Office1>
    <Office2>Medium</Office2>
    <Office3>Small</Office3>
  </Branches>
</Company>

Suppression des valeurs d'un champ multi-occurrence de type simple

Corps de la requête

Pour effacer les valeurs d'un champ multi-occurrence de type simple (Subsidiaries dans cet exemple), dans l'enregistrement Company dont la valeur de CompanyId is DStar, envoyez les informations de mise à jour suivantes dans le corps de la requête :

<records>
  <Company>
    <CompanyId>DStar</CompanyId>
    <Subsidiaries></Subsidiaries> 
  </Company>
</records>

Résultat

Une fois la mise à jour partielle de masse terminée, l'enregistrement mis à jour doit ressembler à ceci :

<Company>
  <CompanyId>DStar</CompanyId>
  <Branches>
    <Office1>Large</Office1>
    <Office2>Medium</Office2>
    <Office3>Small</Office3>
  </Branches>
</Company>

Suppression des valeurs d'un champ entier multi-occurrence de type complexe

Pour effacer les valeurs d'un champ entier multi-occurrence de type complexe, vous devez spécifier la structure de l'élément du type dans les informations de mise à jour.

Corps de la requête

Pour effacer les valeurs d'un champ multi-occurrence de type complexe (Branches dans cet exemple) dans l'enregistrement Company dont la valeur de CompanyId est DStar, envoyez les informations de mise à jour suivantes dans le corps de la requête :

<records>
  <Company>
    <CompanyId>DStar</CompanyId>
    <Branches>
      <Office1></Office1>
      <Office2></Office2>
      <Office3></Office3>
    </Branches>
  </Company>
</records>

Résultat

Une fois la mise à jour partielle de masse terminée, l'enregistrement mis à jour doit ressembler à ceci :

<Company>
  <CompanyId>DStar</CompanyId>
  <Subsidiaries>S_Beijing</Subsidiaries>
  <Subsidiaries>S_Shanghai</Subsidiaries>
</Company>

Suppression de la valeur d'un élément spécifique dans un champ de type multi-occurrence de type complexe

Corps de la requête

Pour effacer la valeur d'un élément spécifique dans un champ multi-occurrence de type complexe (élément Office2 du champ Branches dans cet exemple) de l'enregistrement Company dont la valeur de CompanyId est DStar, envoyez les informations de mise à jour suivantes dans le corps de la requête :

<records>
  <Company>
    <CompanyId>DStar</CompanyId>
    <Branches>
      <Office2></Office2>
    </Branches>
  </Company>
</records>

Résultat

Une fois la mise à jour partielle de masse terminée, l'enregistrement mis à jour doit ressembler à ceci :

<Company>
  <CompanyId>DStar</CompanyId>
  <Subsidiaries>S_Beijing</Subsidiaries>
  <Subsidiaries>S_Shanghai</Subsidiaries>
  <Branches>
    <Office1>Large</Office1>
    <Office3>Small</Office3>
  </Branches>
</Company>