Manipulation de valeurs videsWorking with Empty Values

Une valeur vide indique qu'un membre, tuple ou cellule spécifique est vide.An empty value indicates that a specific member, tuple, or cell is empty. Une valeur de cellule vide signifie soit que les données de la cellule spécifiée sont introuvables dans la table de faits sous-jacente, soit que le tuple de la cellule spécifiée représente une combinaison de membres qui n'est pas applicable à ce cube.An empty cell value indicates either that the data for the specified cell cannot be found in the underlying fact table, or that the tuple for the specified cell represents a combination of members that is not applicable for the cube.

Notes

Même si une valeur vide est différente d'une valeur zéro, une valeur vide est généralement considérée comme telle la plupart du temps.Although an empty value is different from a value of zero, an empty value is typically treated as zero most of the time.

Le requête suivant illustre le comportement des valeurs vides et nulles :The following query illustrates the behavior of empty and zero values:

WITH  
//A calculated Product Category that always returns 0  
MEMBER [Product].[Category].[All Products].ReturnZero AS 0  
//Will return true for any null value  
MEMBER MEASURES.ISEMPTYDemo AS ISEMPTY([Measures].[Internet Tax Amount])  
//Will true for any null or zero value  
//To be clear: the expression 0=null always returns true in MDX  
MEMBER MEASURES.IsZero AS [Measures].[Internet Tax Amount]=0  
SELECT  
{[Measures].[Internet Tax Amount],MEASURES.ISEMPTYDemo,MEASURES.IsZero}  
ON COLUMNS,  
[Product].[Category].[Category].ALLMEMBERS  
ON ROWS  
FROM [Adventure Works]  
WHERE([Date].[Calendar].[Calendar Year].&[2001])  

Les informations suivantes s'appliquent aux valeurs vides :The following information applies to empty values:

  • Le IsEmpty fonction renvoie TRUE si et seulement si la cellule identifiée par le tuple spécifié dans la fonction est vide.The IsEmpty function returns TRUE if and only if the cell identified by the tuple specified in the function is empty. Sinon, la fonction retourne FALSE.Otherwise, the function returns FALSE.

    Notes

    Le IsEmpty fonction ne peut pas déterminer si une expression de membre retourne une valeur null.The IsEmpty function cannot determine whether a member expression returns a null value. Pour déterminer si un membre null est retourné à partir d’une expression, utilisez la ISopérateur.To determine whether a null member is returned from an expression, use the ISoperator.

  • lorsque la valeur de cellule vide est l'opérande d'un opérateur numérique quelconque (+, -, *, /), elle est considérée comme le chiffre zéro si l'autre opérande est une valeur non vide.When the empty cell value is an operand for any one of the numeric operators (+, -, *, /), the empty cell value is treated as zero if the other operand is a nonempty value. Si les deux opérandes sont vides, l'opérateur numérique retourne la valeur de cellule vide ;If both operands are empty, the numeric operator returns the empty cell value.

  • lorsque la valeur de cellule vide est l'opérande de l'opérateur de concaténation de chaîne (+), elle est considérée comme une chaîne vide si l'autre opérande est une valeur non vide.When the empty cell value is an operand for the string concatenation operator (+), the empty cell value is treated as an empty string if the other operand is a nonempty value. Si les deux opérandes sont vides, l'opérateur de concaténation de chaîne retourne la valeur de cellule vide ;If both operands are empty, the string concatenation operator returns the empty cell value.

  • lorsque la valeur de cellule vide est un opérande d'un opérateur de comparaison quelconque (=,When the empty cell value is an operand for any one of the comparison operators (=. <>, > =, <=, >, <), la valeur de cellule vide est considérée comme un zéro ou une chaîne vide, selon si le type de données de l’autre opérande est numérique ou chaîne, respectivement.<>, >=, <=, >, <), the empty cell value is treated as zero or an empty string, depending on whether the data type of the other operand is numeric or string, respectively. Si les deux opérandes sont vides, ils sont considérés comme le chiffre zéro ;If both operands are empty, both operands are treated as zero.

  • lors d'un classement de valeurs numériques, la valeur de cellule vide occupe la même position que le chiffre zéro.When collating numeric values, the empty cell value collates in the same place as zero. S'ils sont tous deux présents, la valeur de cellule vide se place avant le chiffre zéro ;Between the empty cell value and zero, empty collates before zero.

  • lors d'un classement de valeurs de type chaîne, la valeur de cellule vide occupe la même position que la chaîne vide.When collating string values, the empty cell value collates in the same place as the empty string. Si elles sont toutes deux présentes, la valeur de cellule vide se place avant la chaîne vide.Between the empty cell value and the empty string, empty collates before an empty string.

Traitement des valeurs vides dans les instructions et cubes MDXDealing with Empty Values in MDX Statements and Cubes

Dans les instructions MDX (Multidimensional Expressions), vous pouvez rechercher les valeurs vides, puis effectuer certains calculs sur les cellules contenant des données valides (c'est-à-dire non vides).In Multidimensional Expressions (MDX) statements, you can look for empty values and then perform certain calculations on cells with valid (that is, not empty) data. L'élimination de valeurs vides lors des calculs peut s'avérer importante pour certains calculs (tels que les moyennes) risquant d'être faussés par la présence de valeurs de cellule vides.Eliminating empty values when performing calculations can be important because certain calculations, such as an average, can be inaccurate if empty cell values are included.

Si les valeurs vides sont stockées dans vos données de table de faits sous-jacentes, par défaut, elles seront converties en zéro lorsque le cube est traité.If empty values are stored in your underlying fact table data, by default they will be converted to zeroes when the cube is processed. Vous pouvez utiliser la traitement Null option sur une mesure pour contrôler si les faits null sont converties en 0, convertie en une valeur vide, ou même lève une erreur lors du traitement.You can use the Null Processing option on a measure to control whether null facts are converted into 0, converted to an empty value, or even throws an error during processing. Si vous ne souhaitez pas que les valeurs de cellule vides apparaissent dans vos résultats de requête, vous devez créer des requêtes, des membres calculés ou des instructions de script MDX qui éliminent les valeurs vides ou les remplacent par une autre valeur.If you do not want empty cell values appearing in your query results, you should create queries, calculated members, or MDX Script statements that eliminate the empty values or replace them with some other value.

Pour supprimer des lignes ou des colonnes vides dans une requête, vous pouvez utiliser l'instruction NON EMPTY avant la définition de l'ensemble des axes.To remove empty rows or columns from a query, you can use the NON EMPTY statement before the axis set definition. Par exemple, la requête suivante retourne seulement la catégorie de produit Vélos parce que c'est la seule catégorie ayant fait l'objet de ventes dans l'année civile 2001 :For example, the following query only returns the Product Category Bikes because that is the only Category that was sold in the Calendar Year 2001:

SELECT

{[Measures].[Internet Tax Amount]}

ON COLUMNS,

//Comment out the following line to display all the empty rows for other Categories

NON EMPTY

[Product].[Category].[Category].MEMBERS

ON ROWS

FROM [Adventure Works]

WHERE([Date].[Calendar].[Calendar Year].&[2001])

Plus généralement, pour supprimer des tuple vides d'un jeu vous pouvez utiliser la fonction NonEmpty.More generally, to remove empty tuples from a set you can use the NonEmpty function. La requête suivante affiche deux mesures calculées, une qui compte le nombre de catégories Produit et la seconde affiche le nombre de catégories Produit qui ont des valeurs pour la mesure [Montant des taxes sur Internet] et l'année civile 2001 :The following query shows two calculated measures, one of which counts the number of Product Categories and the second shows the number of Product Categories which have values for the measure [Internet Tax Amount] and the Calendar Year 2001:

WITH

MEMBER MEASURES.CategoryCount AS

COUNT([Product].[Category].[Category].MEMBERS)

MEMBER MEASURES.NonEmptyCategoryCountFor2001 AS

COUNT(

NONEMPTY(

[Product].[Category].[Category].MEMBERS

,([Date].[Calendar].[Calendar Year].&[2001], [Measures].[Internet Tax Amount])

))

SELECT

{MEASURES.CategoryCount,MEASURES.NonEmptyCategoryCountFor2001 }

ON COLUMNS

FROM [Adventure Works]

Pour plus d’informations, consultez NonEmpty (MDX).For more information, see NonEmpty (MDX).

Valeurs vides et opérateurs de comparaisonEmpty Values and Comparison Operators

En présence de valeurs vides dans les données, les opérateurs logiques et ceux de comparaison peuvent retourner UNKNOWN plutôt que TRUE ou FALSE.When empty values are present in data, logical and comparison operators can potentially return a third result of EMPTY instead of just TRUE or FALSE. Cette logique tri-valuée nécessaire est source de nombreuses erreurs dans les applications.This need for three-valued logic is a source of many application errors. Ces tableaux présentent les effets dus à l'introduction de valeurs vides dans les comparaisons.These tables outline the effect of introducing empty value comparisons.

Ce tableau représente les résultats de l'application d'un opérateur AND à deux opérandes booléens.This table shows the results of applying an AND operator to two Boolean operands.

ANDAND TRUETRUE EMPTYEMPTY FALSEFALSE
TRUETRUE TRUETRUE FALSEFALSE FALSEFALSE
VIDEEMPTY FALSEFALSE EMPTYEMPTY FALSEFALSE
FALSEFALSE FALSEFALSE FALSEFALSE FALSEFALSE

Ce tableau représente les résultats de l'application d'un opérateur OR à deux opérandes booléens.This table shows the results of applying an OR operator to two Boolean operands.

- ou -OR TRUETRUE FALSEFALSE
TRUETRUE TRUETRUE TRUETRUE
VIDEEMPTY TRUETRUE TRUETRUE
FALSEFALSE TRUETRUE FALSEFALSE

Ce tableau illustre la manière dont l'opérateur NOT négocie ou annule le résultat d'un opérateur booléen.This table shows how the NOT operator negates, or reverses, the result of a Boolean operator.

Expression booléenne à laquelle l'opérateur NOT est appliquéBoolean expression to which the NOT operator is applied est évalué àEvaluates to
TRUETRUE FALSEFALSE
EMPTYEMPTY EMPTYEMPTY
FALSEFALSE TRUETRUE

Voir aussiSee Also

Référence des fonctions MDX (MDX) MDX Function Reference (MDX)
Référence des opérateurs MDX (MDX) MDX Operator Reference (MDX)
Expressions (MDX)Expressions (MDX)