Rozumíme si s MDX

Download Report

Transcript Rozumíme si s MDX

Rozumíme si s MDX
Š.Havlíček
Poslední lekce mistra Lin Chi …
• V podstatě naše zkušenost tak jak ji zakoušíme se neliší od zkušenosti
mistra ZENu.
• Kde se lišíme je jen otázka toho, kam umístíme mlhu.
Co je DeepSee II
• BI komponenta Caché a Ensemble
• V nové verzi použitelná s Caché 2011.1
• UI založené na ZENu avšak s odděleným API
– Standardizované API pro BI dotazy
MDX a DeepSee
Architekt
Uživatelské rozhraní DeeSee
Aplikace
Krychle
Uživ. portál
Analyzer
CSP/ZEN
Oblast
náhledu
MDX dotaz
ZEN reporty
Java/.NET
Dotazy jsou poslány
jako příkazy MDX do
API DeepSee
Engine
DeepSee API
DeepSee API vrátí
hodnoty z krychle jako
%DeepSee.ResultSet
MDX – Multidimezionální výrazy
• MDX – Multi Dimensional Expressions
• Zavedeno 1997 firmou Microsoft
• Dotazovací jazyk pro OLAP databáze
• De facto standard převzatý většinou výrobců OLAP
• Používáno také při XMLA (XML for Analysis)
Základní pojmy OLAP
• Fakta: numerické měřitelné jednotky popisující BP.
– Např.: je-li BP prodej, pak měřítkem je měsíční výkaz prodeje
(komu, kdo, co, kolik, za kolik)
• Dimenze: logicky nebo hierarchicky uspořádané údaje.
– Často časové, geografické nebo produktové dimenze.
– Mohou obsahovat více úrovní
• Měřená veličina (measure): číselná veličina používaná
ke kvantifikaci
– Např.: počet prodaných počítačů, …
Struktura datové krychle HoleFoods
DS Architekt: Dimenze, Hierarchie a Úrovně
MDX …
• MDX není SQL
• Není potřeba znát MDX k používání DeepSee
– Většinu práce udělá Analyzátor
• MDX je používáno skoro všude v DeepSee interně
– Pivotní tabulky
– Dotazy
– Nástěnky používající pivotní tabulky
• Přístup z COS pomocí API umožňuje spouštět MDX
dotazy
– %DeepSee.ResultSet
Syntaxe MDX
• Připomíná to SQL ale NENÍ to SQL
• MDX není „case sensitive“, alespoň většinou
• Používá hranaté závorky pro označení
identifikátorů
SELECT [MEASURES].[AMOUNT SOLD] ON 0,
[PRODUCT].[ALL PRODUCT] ON 1
FROM [HOLEFOODS]
MDX SELECT
• Příkaz SELECT
– SELECT … ON COLUMNS, … ON ROWS FROM
<CUBE>
– SELECT … ON 0, … ON 1 FROM <CUBE>
– SELECT FROM <CUBE>
MDX SELECT …
• Klauzule WHERE filtruje obsah
– Je nezávislá na řádcích a sloupcích
– Prázdné buňky jsou prázdné
Množiny v MDX
• Množina je určena rozsahem hodnot, seznamem nebo
funkcí:
–
–
–
–
DateOfSale.YearSold.MEMBERS
{DateOfSale.2005, DateOfSale.2006, DateOfSale.2007}
DateOfSale.2005:2007
Head(DateOfSale.YearSold.Members, 3)
• Množiny lze vytvářet „za pochodu“, použitím kluazule
WITH SET
Operace nad množinami
• JOIN:
– CROSSJOIN a NONEMPTYCROSSJOIN
• Logické operace:
– INTERSECT (and), UNION (or), EXCEPT (exl. or)
• Řazení a filtrování:
–
–
–
–
DISTINCT (jedinečné prvky)
FILTER (výběr definovaný výrazem)
HIERARCHIZE (řazení logicky podle hierarchie)
ORDER (třídění)
MDX Shell
• Do ##class(%DeepSee.Utils).%Shell()
MDX Shell …
• V MDX shellu lze
– Zobrazit seznam krychlí
– Zobrazit seznam obsahu krychle
– Ukládat dorazy a otevírat uložené dotazy
– Zobrazovat statistiky dotazu
Ukázky příkazů MDX
• Příkaz CUBE vypíše všechny dostupné krychle
– CUBE
– CUBE [<cube_name>] … definice krychle
• Odkaz na člena dimenze:
– [dimension_name].[hierarchy_name].[level_name].[member_name]
– [dimension_name].[hierarchy_name].[level_name].MEMBERS
• Odkaz na měřenou veličinu:
– [MEASURES].[measure_name]
%DeepSee.ResultSet
• %DeepSee.ResultSet umožňuje spouštět MDX
dotazy z programu a pracovat s výsledky dotazu.
DeepSee: dokumentace
• Dokumentace:
– Using MDX with DeepSee II
– DeepSee II MDX Reference
… poslední lekce mistra Lin Chi
• … vážně se nedomníváte, že jen tak jednoduše
dosáhnete osvícení, že vám ukážu jak jednoduše
dosáhnout úspěchu. Nemůžeme si navzájem pomoci,
neexistuje jedna jediná cesta, jste sami na světě, kolik
je vás, tolik je cest …
• … avšak veškeré hlubiny světa a jeho mělčiny,
všechny vaše dovednosti, naplnění vašich očekávání
je zcela ve vašich rukách!