5. října 2015

MDX tutorial 7 – Agregační funkce

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