BASE DE CONNAISSANCES

Messages d'erreur d'agrégation dans un éditeur de calcul


Date de publication : 11 Jan 2016
Date de dernière modification : 24 Aug 2022

Problème

Lorsque vous créez un calcul, l'une des erreurs suivantes peut se produire :
 
  • "Cannot mix aggregate and non-aggregate arguments with this function." (Option 1,2,3 or 4 can be used). (Impossible de combiner les arguments d'agrégation et de non-agrégation avec cette fonction. (Il est possible d'utiliser l'Option 1, 2, 3 ou 4))
  • "All fields must be aggregate or constant when using table calculation functions or fields from multiple data sources." (Option 1 or 3 can be used). (Tous les champs doivent être des agrégations ou des constantes lorsque des fonctions de calcul de table ou des champs issus de plusieurs sources de données sont utilisés. (Il est possible d'utiliser l'option 1 ou 3).)
  • « Argument to sum (an aggregate function) is already an aggregation, and cannot be further aggregated. » (Option 2, 3 or 4 can be used). (Un argument de somme (une fonction d'agrégation) est déjà une agrégation et ne peut pas être agrégé davantage) (Il est possible d'utiliser l'Option 2, 3 ou 4).

Environnement

Tableau Desktop

Résolution

Chaque option peut générer des valeurs différentes (consultez le classeur joint dans le volet de droite et la section d'informations complémentaires pour des exemples spécifiques).
 

Option 1 (Agréger tous les champs)

Enveloppez tous les champs dans une agrégation.

Exemple (sans LOD) :
[Bénéfices] / SUM ([Ventes]) -> SUM ([Bénéfices]) / SUM ([Ventes])

Exemple (avec LOD) :
RANK( {fixed: SUM([Ventes])} ) --> RANK( SUM( {fixed: SUM([Ventes])} ))
 

Option 2 ( Désagréger tous les champs)

Supprimez les agrégations de tous les champs.

Exemple (sans LOD) :
[Bénéfices] / SUM ([Ventes]) ->[Bénéfices] / [Ventes]

Exemple (avec LOD) :
[Bénéfices] / SUM ([Ventes]) ->[Bénéfices] / { fixed: SUM ([Ventes]) }
 

Option 3 ( Désagréger tous les champs, puis agréger le calcul.)

Déplacez l'agrégation de manière à ce que le calcul soit agrégé. 

Par exemple, le calcul :
IF [ID de ligne] = 1
THEN SUM( [Ventes] )
END 

pourrait se présenter ainsi :
SUM(
IF [ID de ligne] = 1
THEN [Ventes]
END )

Option 4 (Utiliser le niveau de détail pour désagréger un champ) 

Utilisez une expression de niveau de détail (LOD) pour désagréger une agrégation. Toutes les expressions LOD renvoient des valeurs non agrégées.

[Ventes]/SUM( [Ventes] ) -> [Ventes]/{FIXED: SUM( [Ventes] )}

Cause

« Impossible de combiner les arguments d'agrégation et de non-agrégation avec cette fonction. »
- Tous les champs doivent avoir la même agrégation (agrégé ou désagrégé). Les agrégations sont calculées au niveau de détail de la vue, ce qui renvoie une valeur pour plusieurs enregistrements. Les champs non agrégés sont calculés pour chaque enregistrement dans les données originales, ce qui renvoie une valeur par enregistrement.

« Tous les champs doivent être des agrégations ou des constantes lorsque des calculs de table ou des champs issus de plusieurs sources de données sont utilisés. »
- En cas de combinaison ou d'utilisation de calculs de table, tous les champs doivent être agrégés.

« Un argument de somme (une fonction d'agrégation) est déjà une agrégation et ne peut pas être agrégé davantage. »
- Un champ agrégé ne peut pas être agrégé à nouveau.

Informations supplémentaires

Comment déterminer si un champ est agrégé.

Les champs importés des données sous-jacentes et des expressions de niveau de détail (LOD) sont toujours non agrégés jusqu'à ce qu'ils soient encapsulés dans une agrégation, par exemple SUM(), MIN(), ATTR(). Pour voir une liste complète des fonctions agrégées, consultez l'article « Fonctions d'agrégation » dans la section Liens connexes.

Les champs calculés peuvent être agrégés ou non agrégés selon le mode d'utilisation des agrégations. Si aucune agrégation n'est utilisée, ou si l'expression la plus éloignée est une expression LOD, le calcul renvoie des résultats non agrégés.

Une astuce permettant de déterminer si un champ est agrégé consiste à ajouter le champ à la vue. S'il affiche AGG("Field Name"), le champ est déjà agrégé.


Exemples :

Vous trouverez ci-dessous une explication du fonctionnement de chaque option en utilisant l'exemple d'ensemble de données présenté comme référence.

Exemples d'ensembles de données
ID de ligneProfitVentes
110030
25060
3710



Option 1 


Formule :
SUM ([Profit]) / SUM ([Ventes])

Résultat :
(100 + 50 + 7) / (30 + 60 + 10) =  157/100  = 1.57 
 

Option 2

[Profit] / [Ventes]

Résultat : (dans l'hypothèse que l'agrégation dans la vue est SUM)

100/30 + 50/60 + 7/10 = 3.333 + .833 + .7 = 4.867
 

Option 3

Résultat :
30 + 0 + 0 = 30
 

Option 4


Consultez Calculs de niveau de détail

Les expressions LOD retournent toujours des résultats non agrégés et peuvent être utilisées pour spécifier le niveau auquel l'agrégation a lieu.

[Ventes]/{FIXED: SUM( [Ventes] )}

Résultat : (dans l'hypothèse que l'agrégation est SUM)

30/100 + 60/100 + 10/100 = 3+60+10 = .3 + .6 + .1 = 1
 


Discuter de cet article... Forum de commentaires
Cet article vous a-t-il permis de résoudre le problème ?