Výběr N hodnot, které splňují nějaké Top kriterium, je pro Oracle BI velmi triviální úlohou. Řešíme ji obvykle zadáním fitru nad sloupcem, který slouží jako kriterium pro Top výběr. Filtr zadáme takto:

Omezením tohoto řešení je skutečnost, že budoucí uživatel takto vytvořeného pohledu na data nutně uvidí právě 20 Top hodnot. Můžeme do filtru zadat i jiné číslo, ale setkal jsem se ovšem s případem, že zákazník chtěl počet řádků vě výběru – tedy hodnotu N – určovat sám – tedy dynamicky.
Řešením, které mně napadlo, je použití proměnné prezentace.

Jak si proměnnou prezentace zadefinujeme a naplníme, se pokusím popsat na následujícím příkladu, kdy jsem k tomu použil Dashboard Prompt (omezený na stránku).
Ukázkový standardní business model znázorňuje obvyklé vazby mezi faktovou tabulkou a dimenzemi.

Protože budeme potřebovat nějaký logický sloupec pro zadání hodnoty „N“, doplnil jsem do logické tabulky Facts logický sloupec N a vložil do něj hodnotu 1.

Tím se zajistila hodnota Data Type implicitně jako Int. Sloupec N jsem přidal do prezentační vrstvy.

Logický sloupec N nyní lze použít v dashboard promptu. Ověříme si konzistenci a repository uložíme.
Přihlásíme se do Answers a vytvoříme Dasboard prompt. Jeho význam omezíme na Page:

Do promptu přidáme sloupec N.

Vhodně zvolíme hodnotu sloupců Operator, Control, Default to (zvolil jsem Specific Value =1), Set Variable (variable jsem pojmenoval X01) a do kolonky Label napíšeme text:
Select value of N in TopN. Default value is 1.Prompt graficky dotvoříme:

Uložíme jej jako např. Page_prompt1.
Ještě připravíme vhodný dotaz. Nesmíme v něm zapomenout na sloupec Rank(Facts.Units), který udává pořadí řádku ve výběru a bude slouži jako filtr, protože uživatel si bude zadávat právě hodnotu počtu řádků. Nejvyšší pořadí pak bude vlastně udávat počet vrácených řádků.

Filtrovací podmínka pro sloupec Rank(Facts.Units) byla vytvořena takto:

Defaultní hodnota 1 slouží k tomu, aby se v případě, že není zadána žádná hodnota proměnné X01, zobrazil právě jediný řádek.
Dotaz uložíme jako Select01 a spolu s promptem umístíme na dashboard.
Výsledek by měl být následující:1)Nezadáme-li do promptu žádnou hodnotu, implicitně se do filtru nastaví hodnota 1 a vybere se jediný řádek.

2) Naopak, zadáme-li např. hodnotu 17, pak se do proměnné prezentace (Presentation Variable) pojmenované X01 nastaví hodnota 17 a vybere se 17 řádků .

Takto si uživatel může výbírat libovolný počet Top N řádků.
Jiří Doubravský (PIKE ELECTRONIC)