Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Prázdná hodnota znamená, že konkrétní prvek, n-tice nebo buňka je prázdná. Prázdná hodnota buňky znamená, že data pro danou buňku nelze najít v základní faktové tabulce, nebo že n-tice pro danou buňku představuje kombinaci prvků, která není pro krychle použitelná.
Note
Ačkoli prázdná hodnota se liší od hodnoty nuly, prázdná hodnota je většinou považována za nulu.
Následující dotaz ilustruje chování prázdných a nulových hodnot:
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])
Následující informace platí pro prázdné hodnoty:
Funkce IsEmpty vrací TRUE právě tehdy, když buňka identifikovaná n-ticí specifikovanou ve funkci je prázdná. Jinak funkce vrací FALSE.
Note
Funkce IsEmpty nemůže určit, zda člen vrací nulovou hodnotu. Pro určení, zda je z výrazu vrácen nulový člen, použijte operátor IS .
Pokud je prázdná buňka operandem pro libovolný číselný operátor (+, -, *, /), prázdná hodnota buňky je považována za nulovou, pokud je druhý operand neprázdná hodnota. Pokud jsou oba operandy prázdné, číselný operátor vrátí prázdnou hodnotu buňky.
Pokud je hodnota prázdné buňky operandem pro operátor řetězení řetězců (+), hodnota prázdné buňky je považována za prázdný řetězec, pokud je druhý operand neprázdná hodnota. Pokud jsou oba operandy prázdné, operátor řetězové konkatenace vrátí prázdnou hodnotu buňky.
Pokud je prázdná hodnota buňky operandem pro libovolný z operátorů porovnání (=. <>, >=, =, ><, ), <hodnota prázdné buňky je považována za nulu nebo prázdný řetězec, v závislosti na tom, zda je datový typ druhého operandu číselný nebo řetězcový řetězec. Pokud jsou oba operandy prázdné, oba operandy jsou považovány za nulové.
Při skládání číselných hodnot se hodnota prázdné buňky shoduje na stejném místě jako nula. Mezi prázdnou hodnotou buňky a nulou se prázdné srovnává před nulou.
Při skládání hodnot řetězců se hodnota prázdné buňky shoduje na stejném místě jako prázdný řetězec. Mezi prázdnou hodnotou buňky a prázdným řetězcem se prázdný srovnává před prázdným řetězcem.
Práce s prázdnými hodnotami v MDX příkazech a krychlech
V příkazech Multidimensional Expressions (MDX) můžete hledat prázdné hodnoty a pak provádět určité výpočty na buňkách s platnými (tedy ne prázdnými) daty. Eliminace prázdných hodnot při provádění výpočtů může být důležitá, protože některé výpočty, například průměr, mohou být nepřesné, pokud jsou zahrnuty hodnoty prázdných buněk.
Pokud jsou prázdné hodnoty uloženy ve vašich podkladových datech faktové tabulky, ve výchozím nastavení se při zpracování krychle převedou na nuly. Můžete použít možnost Null Processing na měře, abyste kontrolovali, zda se nulová fakta převedou na 0, na prázdnou hodnotu, nebo dokonce vyhodí chybu během zpracování. Pokud nechcete, aby se prázdné hodnoty buněk zobrazovaly ve výsledcích dotazů, měli byste vytvářet dotazy, vypočítané členy nebo MDX Script příkazy, které prázdné hodnoty odstraní nebo nahradí jinou hodnotou.
Pro odstranění prázdných řádků nebo sloupců z dotazu můžete použít příkaz NON EMPTY před definicí os. Například následující dotaz vrací pouze kategorii Produkt: Kola, protože to je jediná kategorie, která byla prodána v kalendářním roce 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])
Obecněji lze pro odstranění prázdných tic z množiny použít funkci NonEmpty. Následující dotaz ukazuje dvě vypočítané míry, z nichž jedna počítá počet kategorií produktů a druhá počet kategorií produktů, které mají hodnoty pro měřítko [Suma internetové daně] a kalendářní rok 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]
Pro více informací viz NonEmpty (MDX).
Prázdné hodnoty a srovnávací operátory
Když jsou v datech přítomny prázdné hodnoty, logické a srovnávací operátory mohou potenciálně vrátit třetí výsledek EMPTY místo pouze TRUE nebo FALSE. Tato potřeba pro tříhodnotovou logiku je zdrojem mnoha chyb aplikace. Tyto tabulky popisují dopad zavedení porovnání prázdných hodnot.
Tato tabulka ukazuje výsledky aplikace operátoru AND na dva Booleovské operandy.
| AND | TRUE | EMPTY | FALSE |
|---|---|---|---|
| TRUE | TRUE | FALSE | FALSE |
| PRÁZDNO | FALSE | EMPTY | FALSE |
| FALSE | FALSE | FALSE | FALSE |
Tato tabulka ukazuje výsledky aplikace operátoru OR na dva Booleovské operandy.
| OR | TRUE | FALSE |
|---|---|---|
| TRUE | TRUE | TRUE |
| PRÁZDNO | TRUE | TRUE |
| FALSE | TRUE | FALSE |
Tato tabulka ukazuje, jak operátor NOT neguje nebo obrací výsledek Booleovského operátoru.
| Booleovský výraz, na který je aplikován operátor NOT | Vyhodnotí se jako |
|---|---|
| TRUE | FALSE |
| EMPTY | EMPTY |
| FALSE | TRUE |