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 :
- Exemple : Supprimer en bloc les enregistrements exportés
- Exemple : Supprimer en bloc des enregistrements qui correspondent aux critères communs
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é).