Jak již bylo uvedeno v článku
Oracle BI Metadata repository – IV. Tvorba vlastních ukazatelů, existují dva způsoby jak definovat vlastní výpočty (ukazatele), a to:
- Výpočet na základě již existujících logických sloupců (postup viz. článek výše)
- Výpočet na základě fyzických sloupců (postup je uveden níže)
Není jedno, který z výše uvedených způsobů použijete. Pro každý z nich je generován jiný fyzický SQL dotaz, a to v určitých případech (viz. níže) může mít vliv na správnost / nesprávnost výsledků a dokonce i na výkon samotného dotazu:
- U výpočtů na základě již existujících logických sloupců se nejprve aplikují agregační funkce (ty, které jsou nastaveny u logických sloupců ze kterých se vychází) a až poté se provede samotný výpočet
- U výpočtů na základě fyzických sloupců se nejprve provede výpočet a až poté se aplikuje agregační funkce
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEityzJsbX6dk_aBpqf4cR5bCtMYFo1oM9QXma0itR6Ggtj_5AcTLovTtd9nnE2IavKSwMxnrSJcd33fQCxc2WzQpgGT0EJ6sfdQhLGz-qokUcs_PH35eUC-aENNaUSli7DUzUnc-codTSs/s400/vypocty_definice.JPG)
Příklad, kdy je nutné použít výpočet na základě fyzických sloupců:Pro správný výpočet celkových tržeb se pro každý řádek nejprve vynásobí cena za kus (Unit Price) počtem prodaných kusů (Units Sold) a poté se teprve aplikuje agregační funkce SUM().
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigUYdGWGmyWxA-KrHMu_JExB7LgF06LTGjV_f7B_v7PXIRE7RyJTHNPvoK0vnCRA7IFmuiN-zCn3mwS9kCGZVJiSLtuIdmcDumDygZQVAebRUG0LdPKQby8T98FwblffT_eg193BB1ICs/s320/vypocet_fyz_totrev.JPG)
V případě použití
výpočtu na základě již existujících logických sloupců,
by byl výpočet celkových tržeb chybný. A to proto, že se nejprve aplikují agregační funkce SUM()
„Unit price“ je 500 + 400 + 300 = 1.200
„Units sold“ je 2 + 3 + 4 = 9
a až poté se provede vlastní výpočet, který je v tomto případě chybný: 1.200 x 9 = 10.800
Jak nadefinovat výpočet na základě fyzických sloupců1. Vyberte faktovou tabulku > pravé tlačítko myši > New Object > Logical Column ...
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHUD1fIFuI0NR6g2e2aX8PqM5H4x86ZXAC3HObOaEqHz9VCGSAz25ChkU_-5A79rO46wR0mjro-ffYrno9A9PHT5ZftBwY5Ncebe31GiwJacCFn3Kg5FF_exrKkWZhmVXMTeu5iQXQK3A/s400/01_vypocet_fyz.JPG)
2. Pojmenujte ukazatel a zvolte OK.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrxeXyRXztVmpMRwV-ycK4QnCAn60sk1qO8o8iA3XhBWswD2X9XinYzw3UHCL2yTehXDsnWRg6yo6V2HXRCrUTSpCaI46hwGb_Kb0gDFGzjoKnfmH2w_zYJ68ZGA4ln_HkKHqtPdk0gXQ/s400/02_vypocet_fyz.JPG)
3. Vyberte fyzický zdroj Vaší logické tabulky a zvolte „Properties...“
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh59wDlajVp4WUAIZF6cljX54dMNSAjniv8gWraCdMH0pgPo9hTwyACTihylYiJbxeyVjvoSFLTzGYTDxXypr9u5CbERZUnGiQVLGIwFUTxRxhabdBfeo12mRbUK03cVaPgvnUuzvDLXLU/s400/03_vypocet_fyz.JPG)
4. Vyberte záložku Column Mapping (zde je vidět, jak jsou mapovány jednotlivé logické sloupce z Business Modelu na Fyzickou vrstvu) > vyberte Váš nový ukazatel a spusťte Expression Builder (stiskněte ...)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghnrp0e6Hg_Fw9nVF48Fcg65WhJfebGeTvfI8Fmx63PlFaGsUbYNuWMWI9MUvgFWu8BBf38scQ-bf-Udn7g1qGs2tsqKdwpxz6gGRboG08tAptL-jl_IGPn9VKjhSPCa7xsPoa-Eb69nM/s400/04_vypocet_fyz.JPG)
5. V Expression Builderu nadefinujte vlastní výpočet nad fyzickými sloupci a zvolte OK
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBdJIGXl_C5a7ueOOcbyZEEmIb5SdSfyquru3aI0WUtBBSr5unfK7ZZBnFnJHVW8xuCyUg7z2P4Jq2aEfZYm5fQZ47LFG8Gl3ZoRfuASWL7Gj4r526rBCkexPkpvL7ZDovnpo4GRZB1jQ/s400/05_vypocet_fyz.JPG)
6. Výpočet je zobrazen v mapování mezi Business Modelem a Fyzickou vrstvou
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6_TftO6gimwbloUZxz2-pZIQV_6g_t6q8ElFrZoRhogO3IqQxvMKGAJW8VaZede-oJeuVVp8e24LwqU6ffDua5FXj5Xy4MsHfhQ5zW4BbqDmyskZ8GGfxBLypSmwtNlrpH7kzGDY3Xzs/s400/06_vypocet_fyz.JPG)
7. Nakonec nastavte agregační funkci pro Váš nový ukazatel a přesuňte jej do Prezentační vrstvy
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbYIbxDRikQEQZZkjeG3uLUuNA9hR2yHFwl0hP-cyq4rZZpXACagSItLpc-t-zO1N7lMuhunzAAMiYo0xThkS2nFtPKCk3Lu7YTE-8ZgMdHjDteHKRlT0dQBZaAMNQzMfZREou_H22yZw/s400/08_vypocet_fyz.JPG)
Erik Eckhardt.