Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een lege waarde geeft aan dat een specifiek lid, tuple of cel leeg is. Een lege celwaarde geeft aan dat de gegevens voor de gespecificeerde cel niet in de onderliggende feitentabel kunnen worden gevonden, of dat de tuple voor de gespecificeerde cel een combinatie van leden vertegenwoordigt die niet van toepassing is op de kubus.
Note
Hoewel een lege waarde verschilt van een waarde van nul, wordt een lege waarde meestal als nul beschouwd.
De volgende query illustreert het gedrag van lege en nul waarden:
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])
De volgende informatie geldt voor lege waarden:
De IsEmpty-functie geeft TRUE terug als en slechts als de cel die door de tuple in de functie is gespecificeerd leeg is. Anders geeft de functie FALSE terug.
Note
De IsEmpty-functie kan niet bepalen of een lidexpressie een nulwaarde teruggeeft. Om te bepalen of een null-lid wordt teruggegeven vanuit een expressie, gebruik je de IS-operator .
Wanneer de waarde van de lege cel een operand is voor een van de numerieke operatoren (+, -, *, /), wordt de waarde van de lege cel als nul behandeld als de andere operand een niet-lege waarde is. Als beide operanden leeg zijn, geeft de numerieke operator de waarde van de lege cel terug.
Wanneer de waarde van de lege cel een operand is voor de string-concatenatieoperator (+), wordt de waarde van de lege cel behandeld als een lege string als de andere operand een niet-lege waarde is. Als beide operanden leeg zijn, geeft de string-concatenatie-operator de waarde van de lege cel terug.
Wanneer de waarde van de lege cel een operand is voor een van de vergelijkingsoperatoren (=. <>, >=, <=, >, , <), wordt de waarde van de lege cel behandeld als nul of als een lege string, afhankelijk van of het datatype van de andere operand respectievelijk numeriek of string is. Als beide operanden leeg zijn, worden beide operanden als nul beschouwd.
Bij het verzamelen van numerieke waarden wordt de waarde van de lege cel op dezelfde plek als nul gecollegoriseerd. Tussen de waarde van de lege cel en nul rangeert leeg vóór nul.
Bij het colleren van stringwaarden colletéert de lege celwaarde op dezelfde plek als de lege string. Tussen de waarde van de lege cel en de lege string sorteert empty vóór een lege string.
Omgaan met lege waarden in MDX-statements en kubussen
In Multidimensional Expressions (MDX) statements kun je zoeken naar lege waarden en vervolgens bepaalde berekeningen uitvoeren op cellen met geldige (dat wil zeggen, niet lege) data. Het elimineren van lege waarden bij het uitvoeren van berekeningen kan belangrijk zijn omdat bepaalde berekeningen, zoals een gemiddelde, onnauwkeurig kunnen zijn als lege celwaarden worden opgenomen.
Als lege waarden in je onderliggende feitentabel worden opgeslagen, worden ze standaard omgezet in nullen wanneer de kubus wordt verwerkt. Je kunt de optie Null Processing op een maat gebruiken om te bepalen of null facts worden omgezet naar 0, naar een lege waarde worden omgezet, of zelfs een foutmelding geven tijdens de verwerking. Als je niet wilt dat lege celwaarden in je zoekresultaten verschijnen, moet je queries, berekende leden of MDX Script-statements maken die de lege waarden elimineren of vervangen door een andere waarde.
Om lege rijen of kolommen uit een query te verwijderen, kun je de NON EMPTY-instructie gebruiken vóór de as-setdefinitie. Bijvoorbeeld, de volgende zoekopdracht geeft alleen de Productcategorie Fietsen op, omdat dat de enige categorie is die in het kalenderjaar 2001 is verkocht:
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])
Algemener kunt u om lege tuples uit een set te verwijderen de NonEmpty-functie gebruiken. De volgende zoekopdracht toont twee berekende maten, waarvan één het aantal Productcategorieën telt en de tweede het aantal Productcategorieën toont die waarden hebben voor de maatstaf [Internet Belastingbedrag] en het Kalenderjaar 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]
Voor meer informatie, zie NonEmpty (MDX).
Lege waarden en vergelijkingsoperatoren
Wanneer lege waarden in data aanwezig zijn, kunnen logische en vergelijkingsoperatoren mogelijk een derde resultaat van EMPTY teruggeven in plaats van alleen TRUE of FALSE. Deze behoefte aan logica met drie waarden is een bron van veel toepassingsfouten. Deze tabellen geven het effect van het introduceren van lege waardevergelijkingen weer.
Deze tabel toont de resultaten van het toepassen van een EN-operator op twee Booleaanse operanden.
| AND | TRUE | LEEG | FALSE |
|---|---|---|---|
| TRUE | TRUE | FALSE | FALSE |
| LEEG | FALSE | LEEG | FALSE |
| FALSE | FALSE | FALSE | FALSE |
Deze tabel toont de resultaten van het toepassen van een OF-operator op twee Booleaanse operanden.
| OR | TRUE | FALSE |
|---|---|---|
| TRUE | TRUE | TRUE |
| LEEG | TRUE | TRUE |
| FALSE | TRUE | FALSE |
Deze tabel laat zien hoe de NOT-operator het resultaat van een Booleaanse operator negeert of omkeert.
| Booleaanse expressie waarop de NOT-operator wordt toegepast | Evalueert naar |
|---|---|
| TRUE | FALSE |
| LEEG | LEEG |
| FALSE | TRUE |