V dnešním díle MDX tutorialu se zaměřím
na agregační funkce. Tohle téma je samo o sobě možná méně záživné, ale
nezbytnou prerekvizitou pro funkce navigační a časové. A ty záživné rozhodně
jsou :) K těm se blížíme a čeká nás velmi brzy aplikované MDX.
Agregační funkce nám nad množinou prvků a
volitelně číselným údajem vrátí skalární hodnotu (jedno číslo).
Většina agragačních funkcí má stejnou syntaxi
Funkce(Set,
Výraz)
Na začátek dotaz, ze kterého budu ve výkladu
vycházet. Nejprve na řádky vypíšu posledních 14 dní, které mají prodeje.
SELECT
{[Measures].[Internet Sales]}
ON COLUMNS,
tail(/*poslednich 14 dni*/
nonempty(/*množina
datumů, která má nějaké prodeje přes internet*/
{[Dim Date].[Date].[Date]}
,[Measures].[Internet Sales]
)
,14
)
ON ROWS
FROM [MDX Tutorial]
Z řádkové množiny si vytvořím pojmenovaný
set „Posledních 14“ a počítaný člen „x“, jehož význam se bude měnit dle použité
agregační funkce. Zatím zadávám natvrdo konstantu 1.
WITH SET [Poslednich 14] AS
tail(/*poslednich 14 dni*/
nonempty(/*množina datumů, která má nějaké prodeje přes internet*/
{[Dim Date].[Date].[Date]}
,[Measures].[Internet Sales]
)
,14
)
MEMBER x AS
1
SELECT
{x}
ON COLUMNS
FROM [MDX Tutorial]
Nejdřív spočítáme celkovou sumu, abych zde
stále neopakoval stejný select, který si můžete přečíst nahoře, budu měnit jen
definici počítaného členu.
SUM( «Set»[ ,
«Numeric Expression»] )
Spočítá sumu číselného
výrazu nad množinou
MEMBER x AS
SUM(
[Poslednich 14]
, [Measures].[Internet Sales]
)
AVG( «Set»[, «Numeric Expression»] )
Průměr v dané množině (null hodnoty jsou
z průměru ignorovány).
MEMBER x AS
AVG(
[Poslednich 14]
, [Measures].[Internet Sales]
)
Další funkce, které
mají stejnou syntaxi, jen jiný význam jsou
·
MAX – spočítá maximum
·
MIN – spočítá minimum
·
MEDIAN – spočítá hodnotu uprostřed
statistického výběru
·
STDEV – směrodatná odchylka
·
VARIANC – rozptyl
Funkce která sice má stejnou syntaxi, ale trošku
vybočuje z řady významem je funkce
AGGREGATE( «Set»[, «Numeric Expression»] )
Aggregate je „chameleon“ Počítá nad množinou
prvků agragaci, dle nastavení zdrojového měřítka. Pokud má zdrojové měřítko
nastavenou sum, počítá sumu, má-li LastNonEmpty, počítá LastNonEmpty, počet pro
count atd. Hodí se speciálně u časových kalkulací uložených v dimenzi.
Další kdo vybočuje z řady je funkce Počet
COUNT( «Set»[, EXCLUDEEMPTY | INCLUDEEMPTY] )
Zde není aplikovatelný argument číselný výraz,
zato přibyly dva příznaky, zda do počtu chceme zahrnout prázdné, či ne.
A pro přehled poslední Počet unikátních
DISTINCTCOUNT( «Set» )
Závěr:
Agregační funkce jsou nezbytné pro další
fungování v rámci funkcí setových, či časových. V dnešním blogu není
mnoho příkladů, ale těchto se dočkáte právě v nasledujících dílech o
navigaci, případně práci s časem.
Žádné komentáře:
Okomentovat