neoral.cz

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.

Další v tématu Archiv

Archiv

MDX Tutorail 0. – Rozcestník

Rovnou na rozcestník zarolujte dolů Tutorial se nám již rozrostl do takových rozměrů, že navigace v rámci blogu může být obtížná. Pro rychlejší a přehlednější navigaci použijte tento rozcestník ROZCESTNÍK Relační databáze…

Archiv· MDX tutoriál 13

MDX Tutorial 13 – KPI indikátory

Když píši tento článek, je 1.1.2016. Starý rok skončil, nový začíná. A jak skončil starý rok, tak i MDX tutorial se chýlí ke konci a tohle je jeho poslední díl (pokud si…

Archiv· MDX tutoriál 12

MDX Tutorial 12 - Časové kalkulace jinak a téměř bez práce

V posledních 2 dílech jsme se bavili jednak o časových kalkulacích ( http://www.neoral.cz/2015/11/mdx-tutorial-10-casove-funkce.html ) a o příkazu Scope ( http://www.neoral.cz/2015/12/mdx-tutorial-11-prikaz-scope.html ). Jedná se už o pokročilejší témata, ke kterým se možná ne…