Partager via


Supprimer des données en nombre

La fonctionnalité de suppression en bloc dans Microsoft Dataverse vous aide à maintenir la qualité des données et à gérer la consommation du stockage système en supprimant les données dont vous n’avez plus besoin. Par exemple, vous pouvez supprimer en bloc les données suivantes :

  • Données obsolètes
  • Données qui ne sont plus pertinentes pour l’entreprise
  • Données de test ou d'exemple superflues
  • Données qui ont été importées incorrectement à partir d’autres systèmes

Vous pouvez également effectuer les opérations suivantes :

  • Supprimez des données sur plusieurs tables.
  • Supprimez les enregistrements d’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érez des informations sur les défaillances qui se sont produites lors d’une suppression en bloc.

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

Exécuter la suppression en bloc

Pour supprimer des données en bloc, utilisez le BulkDelete message pour envoyer un travail de suppression en bloc. Avec le Kit de développement logiciel (SDK), utilisez la classe BulkDeleteRequest. Avec l’API web, utilisez l’action BulkDelete. Spécifiez les expressions de requête qui décrivent les enregistrements à supprimer dans la QuerySet propriété de votre requête.

Un travail de suppression en bloc est représenté par un enregistrement dans la Bulk Delete Operation table (BulkDeleteOperation). Un enregistrement d’opération de suppression en bloc inclut les informations suivantes :

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

Le travail de suppression en bloc s’exécute de manière asynchrone sans bloquer d’autres activités. Il supprime uniquement les enregistrements créés avant le début de l’exécution du travail. Le travail supprime les enregistrements spécifiés en fonction des règles en cascade basées sur le comportement en cascade des relations de table.

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

Pour exécuter un travail de suppression en bloc, vous devez disposer des privilèges BulkDelete et Delete sur les types de tables en cours de suppression. Vous devez également disposer d’autorisations de lecture sur les enregistrements de table spécifiés dans la QuerySet propriété. Un administrateur système dispose des autorisations nécessaires par défaut. Ils doivent être accordés à d'autres utilisateurs.

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

Si l’action de suppression sur un type de table spécifique déclenche un plug-in ou un workflow (processus), le plug-in ou le workflow est déclenché chaque fois que le travail 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 en bloc comme vous le feriez normalement, mais définissez le champ de DataSource la requête sur conservé.

Vous pouvez utiliser le Kit de développement logiciel (SDK) avec QueryExpression ou la classe FetchXmlToQueryExpressionRequest avec IOrganizationService.Execute pour convertir FetchXml en un 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 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;
}

Samples

Examinez les exemples suivants du Kit de développement logiciel (SDK) .NET pour la fonctionnalité de suppression en bloc :

Voir aussi

Conservation des données à long terme
Table BulkDeleteOperation