Supprimer en bloc des données

La fonctionnalité de suppression en bloc dans Microsoft Dataverse permet de maintenir la qualité des données et de gérer la consommation de stockage système en supprimant les données inutiles. Par exemple, vous pouvez supprimer en bloc les données suivantes :

  • Données périmées
  • Données inutiles à l’entreprise
  • Données de test ou exemple de données inutiles
  • Données incorrectement importées depuis d’autres systèmes

Et vous pouvez effectuer les opérations suivantes :

  • Supprimez des données sur plusieurs tables.
  • Supprimez des enregistrements dans une table spécifique.
  • Recevoir des notifications par courrier électronique lorsqu’une suppression en bloc se termine.
  • Supprimer des données régulièrement
  • Planifiez l’heure de début d’une suppression en bloc périodique.
  • Récupérer des informations concernant les erreurs qui se sont produites pendant une suppression en bloc.

Pour supprimer plusieurs lignes dans des tableaux élastiques, vous pouvez également utiliser le message DeleteMultiple. DeleteMultiple supprime immédiatement les enregistrements dans un élastique unique, plutôt que d’utiliser une tâche de suppression en bloc.

Exécuter une suppression en bloc

Pour supprimer des données en bloc, utilisez le message BulkDelete pour envoyer une tâche de suppression en bloc. Avec le SDK, utilisez la classe BulkDeleteRequest. Avec l’API web, utilisez l’action BulkDelete. Précisez les expressions de requête qui décrivent les enregistrements pour supprimer la propriété QuerySet de votre demande.

Une tâche de suppression en bloc est représentée par un enregistrement dans la table Bulk Delete Operation (BulkDeleteOperation). Un enregistrement d’opération de suppression en bloc comprend les informations suivantes :

  • Nombre d’enregistrements supprimés par la tâche
  • Nombre d’enregistrements que la tâche n’a pas pu supprimer
  • Indique si la tâche est configurée pour se répéter
  • Heure de début de la tâche

La tâche de suppression en bloc s’exécute de manière asynchrone sans bloquer les autres activités. Elle supprime uniquement les enregistrements créés avant l’exécution de la tâche. La tâche supprime les enregistrements spécifiés selon des règles en cascade basées sur le comportement en cascade des relations de table.

Si une tâche de suppression en bloc échoue ou se termine prématurément, les enregistrements qu’elle a supprimés ne sont pas restaurés. Ils restent supprimés. Un enregistrement des échecs est stocké dans la table Bulk Delete Failure (BulkDeleteFailure). Vous pouvez récupérer des informations dans la table sur l’erreur qui a provoqué l’échec.

Pour exécuter une tâche de suppression en bloc, vous devez avoir les privilèges BulkDelete et Delete sur les types de table supprimés. Vous devez également bénéficier des autorisations en lecture sur les enregistrements de table qui sont spécifiés dans la propriété QuerySet. Un administrateur système a les autorisations nécessaires par défaut. Les autres utilisateurs doivent en bénéficier.

Vous pouvez effectuer une suppression en bloc sur toutes les tables qui prennent en charge le message Delete.

Si l’action de suppression sur un type de table spécifique déclenche un plug-in ou un workflow (processus), ce dernier est déclenché chaque fois que la tâche de suppression en bloc supprime un enregistrement de table de ce type.

Données conservées à long terme

La suppression en bloc est également disponible pour les données conservées à long terme. Exécutez une suppression groupée comme vous le feriez normalement, mais définissez le champ DataSource de la requête sur conservé.

Avec le SDK, vous pouvez utiliser soit QueryExpression ou la classe FetchXmlToQueryExpressionRequest avec IOrganizationService.Execute pour convertir FetchXml en une QueryExpression.

QueryExpression

Utilisez la propriété QueryExpression.DataSource pour indiquer que la requête concerne uniquement les lignes conservées. Définissez la valeur sur retained pour supprimer en bloc les données conservées.

static Guid BulkDeleteRetainedAccountsExample(IOrganizationService service)
{
    var request = new BulkDeleteRequest
    {
        JobName = "Bulk Delete Retained Accounts"
    };

    // Create query and add additional filters as needed
    QueryExpression query = new QueryExpression
    {
        EntityName = "account",
        DataSource = "retained"
    };

    request.QuerySet = new QueryExpression[]{query};

    request.StartDateTime = DateTime.Now;
    request.RecurrencePattern = string.Empty;
    request.SendEmailNotification = false;
    request.ToRecipients = Array.Empty<Guid>();
    request.CCRecipients = Array.Empty<Guid>();

    BulkDeleteResponse response = (BulkDeleteResponse)service.Execute(request);
    return response.JobId;
}

FetchXML

Ajoutez l’attribut datasource='retained' à l’élément fetch pour indiquer que la requête concerne uniquement les lignes conservées.

static Guid BulkDeleteRetainedAccountsFetchXmlExample(IOrganizationService service) {
            
    var convertRequest = new FetchXmlToQueryExpressionRequest
    {
        FetchXml = @"
        <fetch version='1.0' output-format='xml-platform' mapping='logical' datasource='retained'>
            <entity name='account'>
        </entity>
        </fetch>"
    };

    FetchXmlToQueryExpressionResponse convertResponse = (FetchXmlToQueryExpressionResponse)service.Execute(convertRequest);

    var request = new BulkDeleteRequest
    { JobName = "Bulk Delete Retained Accounts" };

    request.QuerySet = new QueryExpression[]{convertResponse.Query};

    request.StartDateTime = DateTime.Now;
    request.RecurrencePattern = string.Empty;
    request.SendEmailNotification = false;
    request.ToRecipients = Array.Empty<Guid>();
    request.CCRecipients = Array.Empty<Guid>();
           
    BulkDeleteResponse response = (BulkDeleteResponse)service.Execute(request);
    return response.JobId;
}

Exemples

Observez les exemples de SDK pour .NET suivants pour la fonctionnalité de suppression en bloc :

Voir aussi

Conservation des données à long terme
Table BulkDeleteOperation

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).