BASE DE CONNAISSANCES

Impossible de convertir la mesure en dimension


Date de publication : 01 May 2013
Date de dernière modification : 17 Mar 2023

Problème

Lorsque vous créez un champ calculé, Tableau Desktop peut reconnaître le champ comme mesure plutôt que comme dimension. Lorsque vous tentez de convertir le champ en une dimension, l'opération peut ne pas être possible.

Environnement

Tableau Desktop

Résolution

Option 1 : ajouter une instruction FIXED

La fonction de niveau de détail (LOD) FIXED peut être convertie en dimension. En fonction du calcul d'origine, la solution exacte ne sera pas la même, mais n'oubliez pas que le calcul dans son ensemble doit être non agrégé (les champs non agrégés, FIXED, les paramètres et les valeurs littérales constantes sont tous non agrégés). Voir les exemples suivants :
 
Exemple 1
Peut uniquement être une mesure :
IF SUM([SALES]) < 100
THEN "Low"
ELSE "High"
END	
Peut être converti en dimension :
IF { FIXED [Region] : SUM( [Sales] ) } < 100
THEN "Low"
ELSE "High"
END	
 
Exemple 2
Peut uniquement être une mesure :
AVG( 
   IF { FIXED [Region] : SUM( [Sales] ) } < 100 
   THEN "Low" 
   ELSE "High" 
   END 
)
Peut être converti en dimension :
{FIXED [Category] : AVG(
   IF { FIXED [Region] : SUM( [Sales] ) } < 100
   THEN "Low"
   ELSE "High"
   END
) }
 
Exemple 3
Peut uniquement être une mesure :
ATTR( [Category] ) + " value"
Peut être converti en dimension :
{ FIXED [Order ID] : MIN( [Category] ) } + " value"
 
Remarque : ATTR() a dû être remplacé par MIN(), car ATTR() est une fonction de table et elle ne peut pas être utilisée à l'intérieur d'une expression FIXED. ATTR() renvoie NULL s'il existe plusieurs valeurs uniques de [Category] dans une même partition (ligne, cellule, barre, point de ligne, etc.) de la vue, ce qui permet d'identifier les problèmes de qualité des données. MIN(), d'autre part, renverra toujours la valeur minimale, à savoir la première dans l'ordre alphabétique des chaînes. Tant que MIN( [Category] ) est fixé à une dimension ou à une combinaison de dimensions qui n'a toujours qu'une seule valeur de catégorie, il n'y aura aucun problème.
 

Option 2 : supprimer des agrégations

Parfois, l'agrégation n'est pas vraiment nécessaire. Par exemple, { FIXED [Region] : SUM( [Sales] } renvoie le total des ventes par région, mais si la source de données n'a qu'un seul enregistrement par région, alors [Sales] renvoie la même valeur.
 
Exemple 1
Peut uniquement être une mesure :
IF SUM([SALES]) < 100
THEN "Low"
ELSE "High"
END	
Peut être converti en dimension :
IF [Sales] < 100
THEN "Low"
ELSE "High"
END	

 

Option 3 : utiliser un champ de classe généré par Tableau

Dans certains cas, il peut être possible de remplacer le calcul d'origine par un champ de classe généré par Tableau. Voir Créer des classes à partir d'une mesure continue
pour obtenir des instructions.
 

Option 4 : effectuer le calcul dans Tableau Prep

La sortie de Tableau Prep sera systématiquement non agrégée et pourra donc toujours être convertie en dimension. En fonction du calcul d'origine, les étapes nécessaires dans Tableau Prep ne seront pas les mêmes. En général, pour répliquer une expression telle que SUM( [Sales] ) dans Tableau Prep, vous aurez besoin d'une étape d'agrégation.

Les calculs de table ne peuvent pas être non agrégés, car ils ne peuvent pas être placés à l'intérieur des fonctions de niveau de détail. Certains calculs de table peuvent être recréés dans Tableau Prep. Par exemple, LOOKUP() peut parfois être remplacé par une jointure décalée. Voir Calcul de table Lookup dans Tableau Prep
 

Option 5 : joindre les données plutôt que d'utiliser la fusion des données

Les champs d'une source de données secondaire doivent être agrégés. Il s'agit d'une limitation de la fusion des données pour laquelle il n'existe pas de solution. Envisagez une jointure entre bases de données ou une jointure dans Tableau Prep.
 

Cause

Si une agrégation est utilisée dans le champ calculé, la mesure ne peut pas être convertie en dimension parce que les résultats du calcul sont dynamiques.

Par exemple, SUM( [Sales] ) ne renvoie pas les mêmes résultats lorsque [Region] se trouve sur l'étagère Lignes et lorsque [Category] se trouve sur l'étagère Lignes. Cependant, l'expression {FIXED [Region] : SUM( [Sales] ) } correspondra toujours au total des ventes par région. L'ajout de l'instruction FIXED indique à Tableau comment calculer SUM(), qui indique ensuite à Tableau comment regrouper chaque enregistrement en fonction des ventes totales de la région à laquelle il appartient.

 

Informations supplémentaires

Pourquoi Tableau utilise-t-il des dimensions et des mesures ?

Tableau tire parti des propriétés communes des données partagées entre différentes sources de données très différentes afin de prendre des décisions intelligentes sur la façon d'afficher les données.

Imaginons que votre source de données contient un champ avec des valeurs numériques, mais qui est nommé « ID ».  Lorsque vous ajoutez « ID » à l'étagère Lignes, au lieu d'obtenir un graphique à barres sans intérêt qui additionne toutes les valeurs d'ID, vous obtenez une ligne pour chaque ID.  Comment Tableau sait-il le faire ?  Les champs nommés « ID » sont un cas particulier ; ils sont considérés par défaut comme des dimensions.

Les dimensions contiennent des données utilisées pour regrouper d'autres données. Ainsi, Tableau sait que les dimensions sont généralement des en-têtes plutôt que des graphiques, même lorsque la dimension contient des données numériques. 

Les dimensions et les mesures sont des concepts issus de la gestion des données qui donnent à Tableau des indices sur la façon dont les données doivent être affichées. Pour plus d'informations sur la manière dont Tableau gère les dimensions et les mesures, consultez Dimensions et mesures, Bleu et vert

 
Cet article vous a-t-il permis de résoudre le problème ?