Datový model (zjednodušeně):
Tabulka faktů: sloupce leden, unor, … prosinec, na úrovni business modelu dodělány součty po kvartálech ( Q1 až Q4) a celkový součet.
Dimenze: Verze plánu
Plán se vytváří na rok, jednotlivé verze ho zpřesňují na základě nových skutečností, případně již existujíc skutečnosti.
Základní report má následující tvar:
Úkolem je vytvořit velmi podobný report, který zobrazí data ze 2 verzí, které uživatel vybere a zobrazí mezi nimi rozdíly. Nejlépe bez nutnosti zasahovat do business vrstvy a vystačit pouze s klientskou částí aplikace Oracle BI. Takto vypadá výsledek:
Jak to udělat:
Prompt: po výběru hodnoty obou verzí nastavíme proměnné ( např. v1, v2)
Answer: uděláme jako kombinaci 2 dotazů
První dotaz uděláme standardně (vpodstatě kopie základního anter – viz první obrázek). Jediné nestandardní je omezení dotazu pomocí proměnných v1 a v2)
Druhý dotaz uděláme podobně jako první, vynecháme v něm sloupec Verze, místo něj dáme konstantu (např.) ‘Změna‘, tedy text, který se bude zobrazovat. Podmínky pro výběr zůstávají stejné jako u předchozího:
Místo původní hodnoty sloupce leden, unor, … je nyní vzorec, např pro leden:
SUM(CASE WHEN tB_form_Consol.Verze = '@{v2}{xx}' THEN -tB_form_Consol.leden/1000 ELSE tB_form_Consol.leden/1000 END)
(jinak řečeno, když verze = v2, pak otočím znaménko a pak celé sečtu, tedy dostanu rozdíl mezi hodnotou pro v1 a pro v2)
Grafická úprava: obarvení a zvýraznění rozdílových hodnot – např. takto (Vlastnosti sloupce -> podmíněné formátování)
Nakonec ještě pár fint, které se při tvorbě reportu využily:
1. Answer: obsahuje 17 sloupců, které mají velmi podobný vzorec – dá se snadno editovat ve formátu XML v záložce Pokročilé. Pozor – po úpravě nezapomenout zaškrtnout Vynechat mezipaměť a stisknout Nastavit XML
2. Dashboard: umístíme hotový report na dashboard. Po vstupu na něj je prompt prázdný a vytvořený Answer hlásí chyby, kterým běžný uživatel nerozumí. Proto byla nastavena vlastnost oddílu - řízená navigace, která zobrazí Answer jen tehdy, pokud vrací data.
3. Prompt: abych zabránil, aby se mi hodnota z promptu (verze) použila jako výzva pro omezení dotazu (protože z tohoto základního Answer jsem volal další Answer formou interakce sloupce/hodnoty a potřeboval jsem předávat hodnoty a verze se předávaly pomocí proměnných), dal jsem v promptu hodnotu do funkce, např: CONCAT(tVerze_csl_0.Verze, '')
Výše uvedení finty jsou popsány v jiných článcích.
Jan Jůza (CCA)
Žádné komentáře:
Okomentovat