Udostępnij za pośrednictwem


Praca z wartości puste

Pustą wartość wskazuje, że określonych element członkowski, spójnej kolekcji lub komórka jest pusta.Wartość pustej komórka wskazuje, albo że dane dla określonej komórka nie można odnaleźć w podstawowej tabela fakt, lub że spójna kolekcja dla określonej komórka reprezentuje kombinacji składników, które nie jest stosowana dla moduł.

Uwaga

Mimo że pustą wartość jest inna niż wartość zero, pustą wartość zazwyczaj jest traktowany jako zero większość czas.

Poniższa kwerenda przedstawia zachowanie jest pusta i wartości zerowe:

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])

Poniższe informacje mają zastosowanie do wartości pustych:

  • The IsEmpty funkcja returns TRUE if and only if the komórka identified by the spójna kolekcja specified in the funkcja is empty. W przeciwnym wypadku funkcja zwraca FALSE.

    Uwaga

    The IsEmpty funkcja cannot determine whether a wyrażenie elementu członkowskiego returns a null value. Aby ustalić, czy zwracana jest zerowy element członkowski z wyrażenie, należy użyć JESToperator.

  • Gdy wartość pustej komórka jest operand jednego z operatorów numerycznych (+,-, *, /), wartość pustej komórka jest traktowany jako zero, jeśli inne argument jest wartością niepuste.Jeśli oba argumenty są puste, liczbowe operator zwraca wartość pustej komórka.

  • Argument dla operator łączenie ciągów (+) ma wartość pustą komórka, jeśli inne argument jest wartością niepustą wartość pustej komórka jest traktowana jako pusty ciąg.Jeśli oba argumenty są puste, operator łączenie ciągów zwraca wartość pustej komórka.

  • Gdy wartość pustej komórka jest operand jednego z operatorów porównania (=.<>, >=, <=, >, <), wartość pustej komórka jest traktowany jako zero lub pusty ciąg, w zależności od tego, czy typ danych z innych operand jest numerycznym lub ciągu, odpowiednio. Jeśli oba argumenty są puste, oba argumenty są traktowane jako zero.

  • Gdy sortowanie wartości liczbowe, posortuje wartość pustej komórka, w tym samym miejscu jako zero.Między wartość pustej komórka i zero jest pusta, posortuje przed zero.

  • Gdy sortowanie wartości ciągów, wartość pustej komórka posortuje w tym samym miejscu jako pusty ciąg.Między wartość pustej komórka i pustym ciągiem pustym posortuje przed pusty ciąg.

W instrukcji MDX i moduły zajmujących się wartości puste

W instrukcji Multidimensional Expressions (MDX), wyszukaj wartości puste i wykonać niektóre obliczenia w komórki o prawidłowe (to znaczy nie pusty) danych.Eliminowanie wartości puste, podczas wykonywania obliczeń może być ważne, ponieważ niektóre obliczenia, takie jak średnia, mogą być niedokładne, w przypadku braku komórka są uwzględniane wartości.

Jeśli wartości puste są przechowywane w podstawowych danych tabela fakt, domyślnie te zostaną przekonwertowane na wartości zerowe podczas przetwarzania moduł.Można użyć Przetwarzanie Null opcję miara kontroli czy faktów wartości null są konwertowane na 0, konwertowane na pustą wartość lub nawet zgłasza błąd podczas przetwarzania.Jeśli nie chcesz, aby wartości pustych komórek znajdujących się w wynikach kwerendy, należy utworzyć kwerendy, składniki obliczeniowe lub instrukcji MDX Script, które wyeliminować puste wartości lub zamienić je na pewną inną wartość.

Aby usunąć puste wiersze lub kolumny z kwerendy, można użyć instrukcja NON puste przed oś zestaw definicji.Na przykład poniższa kwerenda zwraca tylko rowery Kategoria produktu, ponieważ jest tylko kategorię, która została sprzedana w 2001 roku kalendarza:

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])

Mówiąc bardziej ogólnie Aby usunąć z zestaw krotek puste można użyć funkcja niepuste.Poniższa kwerenda przedstawia dwie miara obliczeniowe, z których jedna zlicza liczby kategorii produktów, a drugi pokazuje liczbę kategorie produktów, które mają wartości miara [kwoty podatku od internetowej] i 2001 roku kalendarza:

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]

Aby uzyskać więcej informacji zobacz NonEmpty (MDX).

Puste wartości i porównanie operatorów

Wówczas, gdy wartości puste w danych logicznych i operatory porównania potencjalnie może zwracać trzeciego wyniku EMPTY zamiast po prostu PRAWDA lub FAŁSZ.Tę potrzebę wycenione trzy logika jest źródłem wielu błędów aplikacji.Te tabele przedstawiają wprowadzenia porównania wartości pustej.

W poniższej tabela pokazano wyniki zastosowania pomocą operator AND do dwóch argumentów typu logiczny.

ORAZ

PRAWDA

PUSTE

FAŁSZ

TRUE

PRAWDA

FAŁSZ

FAŁSZ

EMPTY

FAŁSZ

PUSTE

FAŁSZ

FALSE

FAŁSZ

FAŁSZ

FAŁSZ

W poniższej tabela pokazano wyniki zastosowania operator OR do dwóch argumentów typu logiczny.

LUB

PRAWDA

FAŁSZ

TRUE

PRAWDA

PRAWDA

EMPTY

PRAWDA

PRAWDA

FALSE

PRAWDA

FAŁSZ

W poniższej tabela pokazano, jak NOT operator Negacja lub odwraca wynik operator logiczny.

wyrażenie warunkowe, do którego stosowany jest NOT operator

Służy do przeliczania

PRAWDA

FAŁSZ

PUSTE

PUSTE

FAŁSZ

PRAWDA