Regrouper les enregistrements et agréger les calculs à l’aide des sources de données GROUPBY
Lors de la configuration des mises en correspondance ou des formats de modèle de gestion des états électroniques (ER), vous pouvez ajouter les sources de données nécessaires de type GroupBy.
Au moment de la conception, une source de données GroupBy est configurée pour identifier les éléments suivants :
- Une source de données de base qui contient des enregistrements qui seront regroupés lors de l’exécution
- Champs de regroupement de la source de données de base, qui sera utilisée pour le regroupement d’enregistrements lors de l’exécution
- Fonctions d’agrégation qui spécifient les calculs agrégés qui seront effectués pour chaque groupe découvert lors de l’exécution
Au moment de l’exécution, une source de données GroupBy configurée regroupe les enregistrements qui ont les mêmes valeurs dans les champs de regroupement, puis renvoie une liste des enregistrements. Chaque enregistrement représente un seul groupe. Pour chaque groupe, la source de données expose les valeurs de champ par lesquelles les enregistrements initiaux ont été regroupés, les valeurs des fonctions d’agrégation calculées et la liste des enregistrements de la source de données de base qui appartient au groupe.
Fonction d’agrégation
Lors de l’exécution, chaque calcul agrégé est effectué pour chaque groupe d’enregistrements. Ce calcul est effectué en utilisant la valeur d’un seul champ ou d’une expression dans les enregistrements d’une source de données qui a été sélectionnée pour le regroupement dans la source de données modifiable du type GroupBy. Les fonctions d’agrégation suivantes sont actuellement prises en charge :
- AVG : cette fonction renvoie la moyenne des valeurs d’un groupe. Elle peut être utilisée uniquement avec des champs numériques.
- COUNT : cette fonction renvoie le nombre d’éléments trouvés dans un groupe.
- Min : cette fonction renvoie la valeur minimale parmi les valeurs d’un groupe.
- Max : cette fonction renvoie la valeur maximale parmi les valeurs d’un groupe.
- SUM : cette fonction renvoie la somme de toutes les valeurs d’un groupe. Elle peut être utilisée uniquement avec des champs numériques.
Emplacement d’exécution
Lorsque vous modifiez une source de données GroupBy et indiquez la source de données de base contenant les enregistrements à regrouper, le système détecte automatiquement l’emplacement le plus efficace pour l’exécution de cette source de données GroupBy. Si la source de données de base est interrogeable (c’est-à-dire, si elle peut être exécutée au niveau de la base de données), la base de données de l’application est également spécifiée comme emplacement d’exécution de la source de données GroupBy modifiable. Sinon, la mémoire du serveur d’applications est spécifiée comme emplacement d’exécution.
Vous pouvez modifier manuellement l’emplacement d’exécution détecté automatiquement en sélectionnant l’emplacement applicable à la source de données configurée. Si l’emplacement d’exécution sélectionné n’est pas applicable, une erreur de validation est lancée au moment de la conception.
Conseil
Nous vous recommandons d’utiliser l’emplacement de la base de données pour regrouper les sources de données qui exposent un grand nombre d’enregistrements.
Consommation de mémoire
Par défaut, si une source de données GroupBy est exécutée en mémoire, la mémoire du serveur d’applications est utilisée pour stocker les enregistrements de la source de données de base qui appartient à chaque groupe découvert en tant qu’enregistrements d’un seul groupe. Pour permettre de réduire la consommation de mémoire, vous pouvez supprimer le stockage des enregistrements pour les sources de données GroupBy si elles ont été configurées pour calculer uniquement des fonctions agrégées et que les enregistrements de leur groupe ne sont pas utilisés lors de l’exécution. Pour réduire la consommation de mémoire de cette manière, activez la fonctionnalité Réduire l’utilisation de la mémoire dans ER lorsque le regroupement d’enregistrements n’est utilisé que pour calculer les agrégations dans l’espace de travail Gestion des fonctionnalités.
Alternatives
Des agrégations similaires peuvent être calculées en utilisant différents types de sources de données ou fonctions intégrées ER.
Pour en savoir plus sur cette fonction, réalisez l’exemple suivant.
Exemple : Utiliser une source de données GROUPBY pour les calculs globaux et le regroupement des enregistrements
Cet exemple montre comment un utilisateur ayant le rôle d’administrateur système ou de consultant fonctionnel de gestion des états électroniques peut configurer un mappage de modèle de gestion des états électroniques ayant une source de données GROUPBY utilisée pour calculer les fonctions globales et les enregistrements de groupe. Ce mappage de modèle est utilisé pour imprimer le rapport de contrôle lors de la génération de la déclaration d’échanges de biens. Cet état vous permet de passer en revue les transactions d’échanges de biens déclarées.
Les procédures de cet exemple peuvent être effectuées dans la compagnie DEMF dans Microsoft Dynamics 365 Finance.
Préparer des exemples de données
Assurez-vous que vous disposez des transactions de déclaration d’échanges de biens pour la génération d’états sur la page Déclaration d’échanges de biens. Vous devez avoir des transactions pour différents codes de transport, car vous regrouperez les transactions par champ Transport dans cet exemple.
Configurer la structure de gestion des états électroniques
Procédez comme suit dans Configurer la structure des états électroniques pour configurer l’ensemble minimum de paramètres d’état électronique. Vous devez terminer cette configuration avant de commencer à utiliser la structure des états électroniques pour concevoir un mappage de modèle de gestion des états électroniques.
Importer la configuration du format de gestion des états électroniques standard
Suivez les étapes de l’action Importer la configuration du format de gestion des états électroniques standard pour ajouter les configurations des états électroniques standard à votre instance actuelle de Dynamics 365 Finance. Importer la version 1 de la configuration du modèle de la déclaration d’échanges de biens depuis le référentiel.
Créer une configuration du modèle de données personnalisée
Suivez la procédure dans Ajouter une configuration du modèle de données personnalisée pour ajouter manuellement une nouvelle configuration de modèle de données de gestion des états électroniques Modèle de déclaration d’échanges de biens (Litware) issue de la configuration du modèle de déclaration d’échanges de biens importée.
Configurer un composant du modèle de données personnalisé
Suivez ces étapes pour apporter les modifications requises au modèle de données Modèle de déclaration d’échanges de biens (Litware), afin qu’il puisse être utilisé pour exposer les codes de transport qui ont les détails requis.
Accédez à Administration d’organisation>États électroniques>Configurations.
Sur la page Configurations, dans l’arborescence de configuration, sélectionnez Modèle de déclaration d’échanges de biens (Litware).
Sélectionnez Concepteur.
Sur la page Concepteur de modèle de données, dans l’arborescence de modèle, sélectionnez Déclaration d’échanges de biens.
Sélectionnez Nouvelle pour ajouter un nouveau nœud imbriqué pour le nœud Déclaration d’échanges de biens. Dans la boîte de dialogue déroulante pour ajouter un nœud de modèle de données, procédez comme suit :
- Dans le champ Nom, entrez Transport.
- Dans le champ Type d’article, sélectionnez Liste d’enregistrements.
- Pour ajouter le nouveau rôle, sélectionnez Ajouter.
Sélectionnez Nouveau pour ajouter un nouveau nœud imbriqué pour le nœud Transport que vous venez d’ajouter. Dans la boîte de dialogue déroulante pour ajouter un nœud de modèle de données, procédez comme suit :
- Dans le champ Nom, entrez Code.
- Dans le champ Type d’article, sélectionnez Chaîne.
- Pour ajouter le nouveau rôle, sélectionnez Ajouter.
Sélectionnez Nouveau pour ajouter un autre nouveau nœud imbriqué pour le nœud Transport. Dans la boîte de dialogue déroulante pour ajouter un nœud de modèle de données, procédez comme suit :
- Dans le champ Nom, entrez TotalInvoicedAmount.
- Dans le champ Type d’article, sélectionnez Réel.
- Pour ajouter le nouveau rôle, sélectionnez Ajouter.
Sélectionnez Nouveau pour ajouter un autre nouveau nœud imbriqué pour le nœud Transport. Dans la boîte de dialogue déroulante pour ajouter un nœud de modèle de données, procédez comme suit :
- Dans le champ Nom, entrez NumberOfTransactions.
- Dans le champ Type d’article, sélectionnez Entier.
- Pour ajouter le nouveau rôle, sélectionnez Ajouter.
Sélectionnez Nouveau pour ajouter un autre nouveau nœud imbriqué pour le nœud Transport. Dans la boîte de dialogue déroulante pour ajouter un nœud de modèle de données, procédez comme suit :
- Dans le champ Nom, entrez Transaction.
- Dans le champ Type d’article, sélectionnez Liste d’enregistrements.
- Pour ajouter le nouveau rôle, sélectionnez Ajouter.
Pour le nœud Transaction que vous venez d’ajouter, sur le raccourci Nœud, sélectionnez Basculer la référence d’élément.
Dans la boîte de dialogue Basculer la référence d’élément, dans l’arborescence du modèle de données, sélectionnez CommodityRecord. Puis sélectionnez OK.
Terminer la conception d’un modèle de données personnalisé
Suivez les étapes de la procédure Terminer la conception du modèle de données pour compléter la conception du modèle de données dérivé Modèle de déclaration d’échanges de biens (Litware).
Créer une configuration de mise en correspondance de modèles
Suivez la procédure dans Créer une configuration de mappage du modèle pour ajouter manuellement une nouvelle configuration de mappage du modèle de gestion des états électroniques Exemple de mappage de déclaration d’échanges de biens pour la configuration dérivée du modèle de déclaration d’échanges de biens (Litware).
Ajouter un nouveau composant de mappage de modèle
- Accédez à Administration d’organisation>États électroniques>Configurations.
- Sur la page Configurations, dans l’arborescence de configuration du volet gauche, développez la configuration Modèle de déclaration d’échanges de biens.
- Sélectionnez la configuration Exemple de mappage de déclaration d’échanges de biens.
- Sélectionnez Concepteur pour ouvrir la liste des mises en correspondance.
- Sélectionnez Supprimer pour supprimer le composant de mappage existant.
- Sélectionnez Nouveau pour ajouter un nouveau composant de mappage.
- Dans le champ Définition, sélectionnez Déclaration d’échanges de biens.
- Dans le champ Nom, tapez Mappage de la déclaration d’échanges de biens.
- Sélectionnez Concepteur pour configurer le nouveau mappage.
Concevoir le composant de mappage de modèles ajouté
Ajouter une source de données pour accéder à une table d’application
Configurez une source de données pour accéder aux tables d’application qui contiennent les détails des transactions de déclaration d’échanges de biens.
- Sur la page Concepteur de mise en correspondance de modèles, dans le volet Types de sources de données, sélectionnez Dynamics 365 for Operations\Enregistrements de la table.
- Dans le volet Sources de données, sélectionnez Ajouter une racine pour ajouter une nouvelle source de données qui sera utilisée pour accéder à la table Intrastat. Chaque enregistrement dans la table Déclaration d’échanges de biens représente une seule transaction de déclaration d’échanges de biens.
- Dans la boîte de dialogue Propriétés de la source de données, dans le champ Nom, saisissez Transaction.
- Dans le champ Table, entrez Déclaration d’échanges de biens.
- Sélectionner OK pour ajouter la nouvelle source de données.
Ajouter une source de données pour regrouper les transactions de déclaration d’échanges de biens
Configurez une source de données GroupBy pour regrouper les transactions de déclaration d’échanges de biens et calculer les fonctions d’agrégation.
Sur la page Concepteur de mise en correspondance de modèles, dans le volet Types de sources de données, sélectionnez Fonctions\Regrouper par.
Dans le volet Sources de données, sélectionnez Ajouter une racine pour ajouter une nouvelle source de données qui sera utilisée pour regrouper les transactions de déclaration d’échanges de biens et les fonctions d’agrégation des calculs.
Dans la boîte de dialogue Propriétés de la source de données, dans le champ Nom, saisissez TransportRecord.
Sélectionnez Modifier le groupe par pour configurer les conditions de regroupement.
Sur la page Modifier les paramètres « Regrouper par », dans la liste des sources de données du volet de droite, sélectionnez la source de données Transaction et développez-la.
Sélectionnez Ajouter un champ à > Éléments à grouper pour indiquer que la source de données Transaction est sélectionnée comme la source de données de base pour la source de données GroupBy configurée. Les enregistrements de la source de données Transaction seront regroupés et les valeurs de champ de cette source de données seront utilisées pour les calculs dans les fonctions d’agrégation.
Sélectionnez le champ Transaction\Transport, puis sélectionnez Ajouter le champ à >Champ regroupé pour indiquer que le champ Transport de la source de données de base est sélectionné comme critère de regroupement pour la source de données GroupBy configurée. En d’autres termes, les enregistrements de la source de données Transaction seront regroupés en fonction de la valeur du champ Transport. Chaque enregistrement de la source de données GroupBy représentera un code de transport unique qui a été trouvé dans les enregistrements de la source de données de base.
Sélectionnez le champ Transaction\AmountMST, puis procédez comme suit :
- Sélectionnez Ajouter un champ à > Agréger les champs pour indiquer qu’une fonction d’agrégation sera calculée pour ce champ.
- Dans le volet Agrégations, dans l’enregistrement qui a été ajouté au champ Transaction\AmountMST sélectionné, dans le champ Méthode, sélectionnez la fonction Somme.
- Dans le champ facultatif Nom, entrez TotalInvoicedAmount.
Ces paramètres spécifient que, pour chaque groupe de transport, le montant total du champ Transaction\AmountMST sera calculé.
Sélectionnez le champ Transaction\RecId, puis procédez comme suit :
- Sélectionnez Ajouter un champ à > Agréger les champs pour indiquer qu’une fonction d’agrégation sera calculée pour ce champ.
- Dans le volet Agrégations, dans l’enregistrement qui a été ajouté au champ Transaction\RecId sélectionné, dans le champ Méthode, sélectionnez la fonction Nombre.
- Dans le champ facultatif Nom, entrez NumberOfTransactions.
Ces paramètres spécifient que, pour chaque groupe de transport, le nombre de transactions dans le groupe sera calculé.
Cliquez sur Enregistrer.
Passez en revue les paramètres d’exécution de la source de données modifiable. Vous observerez que Détection automatique a été sélectionnée de façon automatique dans le champ Emplacement d’exécution et que le champ Exécution à contient la valeur SQL. Ces paramètres spécifient que la source de données de base Transaction est actuellement interrogeable et vous pouvez exécuter la source de données modifiable GroupBy au niveau de la base de données.
Ouvrez la recherche pour le champ Emplacement d’exécution pour consulter la liste des valeurs disponibles. Notez que vous pouvez sélectionner Requête ou En mémoire pour forcer l’exécution de cette source de données GroupBy au niveau de la base de données ou dans la mémoire du serveur d’applications.
Sélectionnez Enregistrer, puis fermez la page Modifier les paramètres « Regrouper par ».
Sélectionnez OK pour terminer les réglages de la source de données GroupBy.
Lier la source de données GroupBy aux champs d’un modèle de données
Liez la source de données configurée aux champs du modèle de données pour spécifier la manière dont le modèle de données sera rempli avec les données d’application au moment de l’exécution.
Sur la page Concepteur de mise en correspondance de modèles, dans le volet Modèle de données, développez le nœud Transport.
Dans le volet Sources de données, développez la source de données TransportRecord.
Ajoutez une liaison pour exposer la liste des groupes de transport découverts :
- Dans le volet Modèle de données, sélectionnez l’élément Transport.
- Dans le volet Sources de données, sélectionnez la source de données TransportRecord.
- Sélectionnez Lier.
Ajoutez une liaison pour exposer le code de transport de chaque groupe de transport découvert :
- Sélectionnez l’éléent du modèle de données Transport.Code.
- Sélectionnez le champ regroupé TransportRecord.grouped.TransportMode.
- Sélectionnez Lier.
Ajoutez une liaison pour exposer les valeurs des fonctions d’agrégation calculées pour chaque groupe de transport découvert :
- Sélectionnez l’élément du modèle de données Transport.NumberOfTransactions.
- Sélectionnez le champ agrégé TransportRecord.agregated.NumberOfTransactions.
- Sélectionnez Lier.
- Sélectionnez l’élément du modèle de données Transport.TotalInvoicedAmount.
- Sélectionnez le champ agrégé TransportRecord.agregated.TotalInvoicedAmount.
- Sélectionnez Lier.
Ajoutez une liaison pour exposer les enregistrements de transaction appartenant à chaque groupe de transport découvert :
- Sélectionnez l’éléent du modèle de données Transport.Transaction.
- Sélectionnez le champ TransportRecord.lines.
- Sélectionnez Lier.
Vous pouvez continuer à configurer des liaisons pour les éléments imbriqués de l’élément du modèle de données Transport.Transaction et le champ de source de données TransportRecord.lines pour exposer, lors de l’exécution, les détails des transactions de déclaration d’échanges de biens qui appartiennent à chaque groupe de transport découvert.
Déboguer le composant de mappage de modèles ajouté
Utilisez le Débogueur de source de données ER pour tester le mappage de modèle configuré.
Sur la page Concepteur de mappage de modèles, sélectionnez Démarrer le débogage.
Sur la page Déboguer les sources de données, dans le volet de gauche, sélectionnez la source de données TransportRecord, puis sélectionnez Lire tous les enregistrements.
Développez la source de données TransportRecord, puis procédez comme suit :
- Sélectionnez la source de données TransportRecord.grouped.TransportMode.
- Sélectionnez Obtenir la valeur.
- Sélectionnez la source de données TransportRecord.grouped.NumberOfTransactions.
- Sélectionnez Obtenir la valeur.
- Sélectionnez la source de données TransportRecord.grouped.TotalInvoicedAmount.
- Sélectionnez Obtenir la valeur.
Dans le volet droit, sélectionnez Développer tout.
La source de données TransportRecord expose deux enregistrements et présente deux codes de transport. Pour chaque code de transport, le nombre de transactions et le montant total facturé sont calculés.
Note
L’approche de « lecture à la demande » est utilisée lorsqu’une source de données GroupBy est appelée pour optimiser les appels de base de données. Par conséquent, certaines des valeurs de champ d’une source de données GroupBy sont calculées dans le débogueur de source de données ER uniquement lorsqu’elles sont liées à des champs de modèle de données.
Forum aux questions
Existe-t-il un moyen de calculer les totaux généraux lorsque les totaux du groupe sont calculés ?
Oui. Pour calculer les totaux généraux, configurez une autre source de données GroupBy où la source de données GroupBy précédemment configurée est utilisée comme source de données de base. L’illustration suivante indique la source de données Totaux de type GroupBy utilisée pour calculer la fonction SUM agrégée, selon l’agrégation SUM de la source de données TransportRecord du type GroupBy.
L’illustration suivante montre les résultats du débogage de la source de données Totaux.