Utilizzo di valori vuotiWorking with Empty Values

SI APPLICA A:sìSQL Server Analysis ServicesnoAzure Analysis ServicesAPPLIES TO:yesSQL Server Analysis ServicesnoAzure Analysis Services

Un valore vuoto indica che un determinato membro, tupla o cella è vuoto.An empty value indicates that a specific member, tuple, or cell is empty. Una cella vuota indica che nella tabella dei fatti sottostante non è possibile trovare i dati per la cella specificata oppure che la tupla per la cella specificata rappresenta una combinazione di membri non applicabile per il cubo.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.

Nota

Sebbene un valore vuoto sia diverso da un valore zero, i valori vuoti vengono gestiti come zero nella maggior parte dei casi.Although an empty value is different from a value of zero, an empty value is typically treated as zero most of the time.

Nella query seguente viene illustrato il comportamento di valori vuoti e zero: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])  

Per i valori vuoti vale quanto segue:The following information applies to empty values:

  • Il IsEmpty risultato della funzione TRUE se e solo se la cella identificata dalla tupla specificata nella funzione è vuota.The IsEmpty function returns TRUE if and only if the cell identified by the tuple specified in the function is empty. In caso contrario, la funzione restituisce FALSE.Otherwise, the function returns FALSE.

    Nota

    Il IsEmpty funzione non è possibile determinare se un'espressione di membro restituisce un valore null.The IsEmpty function cannot determine whether a member expression returns a null value. Per determinare se un membro null viene restituito da un'espressione, utilizzare il ISoperatore.To determine whether a null member is returned from an expression, use the ISoperator.

  • Quando il valore di cella vuota è un operando per un operatore numerico (+, -, *, /), verrà trattato come zero se l'altro operando è un valore non vuoto.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. Se entrambi gli operandi sono vuoti, l'operatore numerico restituirà il valore di cella vuota.If both operands are empty, the numeric operator returns the empty cell value.

  • Quando il valore di cella vuota è un operando per l'operatore di concatenazione delle stringhe (+), verrà trattato come una stringa vuota se l'altro operando è un valore non vuoto.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. Se entrambi gli operandi sono vuoti, l'operatore di concatenazione delle stringhe restituirà il valore di cella vuota.If both operands are empty, the string concatenation operator returns the empty cell value.

  • Quando il valore di cella vuota è un operando per gli operatori di confronto (=.When the empty cell value is an operand for any one of the comparison operators (=. <>, > =, <=, >, <), il valore di cella vuota viene trattato come zero o una stringa vuota, a seconda se il tipo di dati di altro operando sia numeric o string, rispettivamente.<>, >=, <=, >, <), 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. Se entrambi gli operandi sono vuoti, verranno trattati come zero.If both operands are empty, both operands are treated as zero.

  • Quando si confrontano valori numerici, il valore di cella vuota occupa la stessa posizione dello zero.When collating numeric values, the empty cell value collates in the same place as zero. Nel confronto tra il valore di cella vuota e lo zero, il valore di cella vuota precede lo zero.Between the empty cell value and zero, empty collates before zero.

  • Quando si confrontano valori stringa, il valore di cella vuota occupa la stessa posizione della stringa vuota.When collating string values, the empty cell value collates in the same place as the empty string. Nel confronto tra il valore di cella vuota e la stringa vuota, il valore di cella vuota precede la stringa vuota.Between the empty cell value and the empty string, empty collates before an empty string.

Gestione di valori vuoti in cubi e istruzioni MDXDealing with Empty Values in MDX Statements and Cubes

Nelle istruzioni MDX (Multidimensional Expressions) è possibile cercare valori vuoti e quindi eseguire determinati calcoli su celle contenenti dati validi, ovvero non vuote.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'eliminazione dei valori vuoti prima dell'esecuzione dei calcoli può essere molto importante, perché se vengono incluse celle vuote alcuni calcoli, ad esempio il calcolo della media, non vengono eseguiti correttamente.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.

Se nei dati della tabella dei fatti sottostante sono archiviati dei valori vuoti, per impostazione predefinita tali valori saranno convertiti in zeri durante l'elaborazione del cubo.If empty values are stored in your underlying fact table data, by default they will be converted to zeroes when the cube is processed. È possibile utilizzare il elaborazione valori Null opzione in una misura per controllare se i fatti null vengono convertiti in 0, convertito in un valore vuoto o se viene generato un errore durante l'elaborazione.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. Se non si desidera che nei risultati di una query appaiano valori di cella vuoti, è necessario creare query, membri calcolati o istruzioni di script MDX che eliminano i valori vuoti o li sostituiscono con altri valori.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.

Per rimuovere righe o colonne vuote da una query, è possibile utilizzare l'istruzione NON EMPTY prima della definizione del set di assi.To remove empty rows or columns from a query, you can use the NON EMPTY statement before the axis set definition. Ad esempio, nella query seguente viene restituita solo la categoria di prodotti Bikes perché è l'unica categoria che ha avuto vendite nell'anno 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])

Più genericamente, per rimuovere tuple vuote da un set è possibile utilizzare la funzione NonEmpty.More generally, to remove empty tuples from a set you can use the NonEmpty function. Nella query seguente vengono illustrate due misure calcolate, una delle quali conta il numero di Categorie prodotto e l'altra mostra il numero di Categorie prodotto che contengono valori per la misura [Imposte Internet] e per l’anno 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]

Per ulteriori informazioni, vedere NonEmpty ( MDX ) .For more information, see NonEmpty (MDX).

Valori vuoti e operatori di confrontoEmpty Values and Comparison Operators

Se i dati includono valori vuoti, oltre a TRUE e FALSE gli operatori logici e di confronto possono restituire un terzo valore, EMPTY.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. Questa logica a tre valori è necessaria, ma causa numerosi errori nelle applicazioni.This need for three-valued logic is a source of many application errors. Nelle tabelle seguenti vengono indicati i risultati ottenuti quando si includono valori vuoti in un confronto.These tables outline the effect of introducing empty value comparisons.

Nella tabella seguente vengono indicati i risultati ottenuti quando si applica l'operatore AND a due operandi booleani.This table shows the results of applying an AND operator to two Boolean operands.

ANDAND TRUETRUE EMPTYEMPTY FALSEFALSE
TRUETRUE TRUETRUE FALSEFALSE FALSEFALSE
VUOTOEMPTY FALSEFALSE EMPTYEMPTY FALSEFALSE
FALSEFALSE FALSEFALSE FALSEFALSE FALSEFALSE

Nella tabella seguente vengono indicati i risultati ottenuti quando si applica l'operatore OR a due operandi booleani.This table shows the results of applying an OR operator to two Boolean operands.

oOR TRUETRUE FALSEFALSE
TRUETRUE TRUETRUE TRUETRUE
VUOTOEMPTY TRUETRUE TRUETRUE
FALSEFALSE TRUETRUE FALSEFALSE

Nella tabella seguente viene illustrato come l'operatore NOT esegue la negazione, ovvero inverte, il risultato di un operatore booleano.This table shows how the NOT operator negates, or reverses, the result of a Boolean operator.

Espressione booleana a cui viene applicato l'operatore NOTBoolean expression to which the NOT operator is applied Valutato suEvaluates to
TRUETRUE FALSEFALSE
EMPTYEMPTY EMPTYEMPTY
FALSEFALSE TRUETRUE

Vedere ancheSee Also

Riferimento alla funzione MDX ( MDX ) MDX Function Reference (MDX)
Riferimento agli operatori MDX ( MDX ) MDX Operator Reference (MDX)
Espressioni ( MDX )Expressions (MDX)