Oracle Business Intelligence

blog związany z Business Intelligence, używanie, wdrażanie, doświadczenia

Archive for the 'Podstawy analizy' Category

Raport filtrowany wstępnie po faktach

Posted by Marek Gregor on 13th Listopad 2009

W mojej codziennej pracy spotykam się z wieloma problemami i pytaniami dotyczącymi tworzenia raportów. Jednym z nich dość ciekawym było pytanie: Dlaczego raport nie filtruje chociaż filtr ustawiony jest dość jasno a raport jest dość prosty. Po isię raportowi okazało się że użytkownik chciał pokazać sumę sprzedaży różnych oddziałów ale tylko takich produktów gdzie sprzedaż była znaczna tzn powyżej jakiejś wartości. Oto odwzorowanie tego problemu na schemacie SH. Załóżmy że chcemy zrobić raport sprzedaży dla regiony Ameryka dla produktów o znacznej sprzedaży tzn takich których suma sprzedaży w tych regionach przekroczyła 100000$ (nie interesuje nas drobnica). Na początek sprawdźmy jaka jest sprzedaż całkowita dla regionu Ameryki

filtrpofaktach3

i wynik

filtrpofaktach2

Zróbmy więc raport z filtrem 100000$ :

filtrpofaktach1

Na pierwszy rzut oka wydawałoby się że  to jest to o co nam chodzi -  sprawdźmy wynik:

filtrpofaktach2

Taki sam jak poprzednio – czy filtr nie działa? Oczywiście działa lecz ponieważ filtrujemy fakt to tak naprawdę najpierw dokonywana jest grupowanie szczegółów dla regionu ameryki a potem odfiltrowywane są te regiony które mają sprzedaż poniżej 100000$ (tutaj takich nie ma więc nic nie zostało odfiltrowane).

Aby zrobić poprawnie raport na filtrowanych wstępnie faktach mamy dwie metody:

1) użyć tabel przestawnych ( dobry ale czasami  otrzemy się o  limit rekordów dla tabel przestawnych)

2) użyć mechanizmu podraportów

Metoda 1

Wyciągamy szczegół na którego poziomie miałby byc zastosowany filtr dla sumy sprzedaży ( w naszym wypadku jak powiedzieliśmy wcześniej nie chcemy produktów gdzie sprzedaż była mniejsza niż 100000$ a więc jest to Nazwa produktu)

filtrpofaktach4

jak widać na wyniku odfiltrowaliśmy sprzedaż gdzie suma była mniejsza niż 100000$

filtrpofaktach5

ok ale my chcieliśmy tylko prosty wynik w postaci sumy całości a nie szczegóły. Sprawę załatwia prosty Pivot table czyli po naszemu tabela przestawna

filtrpofaktach6

Tak więc w ten prosty sposób uzyskaliśmy to o co nam chodziło – sumę sprzedaży dla regionu Ameryki produktów których wartość sprzedaży była większa niż 1000000$

Metoda 2

Tworzymy prosty raport z  filtrami jak powyżej i zostawiamy tylko kolumnę nazwa produktu

filtrpofaktach7

zapisujemy go pod dowolną nazwą i przystępujemy do stworzenia raportu końcowego:

w którym filtrujemy nazwę produktu na podstawie wcześniej stworzonego wstępnego raportu w którym określiliśmy już kryteria filtrowania. Filtrowanie na podstawie zapisanego raportu można dokonać w okienku Filtrowania pod przyciskiem “Zaawansowane” – wybieramy raport i kolumnę której dotyczy filtrowanie

filtrpofaktach8

ostatecznie mamy

filtrpofaktach9

i poprawny wynik

filtrpofaktach10

Jak widać drugą metodą osiągnęliśmy ten sam rezultat . Użycie tabel przestawnych jest w zasadzie szybsze ale spotkałem się z sytuacją że analizowane były poszczególne transakcje które były filtrowane po fakcie i po odfiltrowaniu zostało ich tak wiele iż użytkownik otrzymał komunikat o przekroczeniu limitu rekordów ustawionego dla tabel przestawnych (które są notabene miniaturowymi kostkami OLAP) i w takim przypdku pozostało użycie metody 2.

Jeśli często filtrujemy po jakimś fakcie na poziomie wymiaru należało by sie zastanowić czy nie przeprojektować hurtownię/ repozytorium OBI EE (a w zasadzie jednego z jej wymiarów) tak by w tabeli wymiarów dla każdego rekordu przechowywać zagregowany na odpowiednim poziomie dany fakt  po którym w łatwy sposób będzie można filtrować. W tym momencie ten sam fakt będziemy mieć w tabeli wymiarów (jako  zagregowanie) i w tabeli faktów jako policzalny/sumowalny  fakt .

Czuwaj

Tags: ,
Posted in Answers, Podstawy analizy | No Comments »

Obsługa dat w BI – funkcje, konwersje, analizy po datach nie posiadających hierarchii

Posted by Marek Gregor on 5th Czerwiec 2009

Postanowiłem że opiszę jak stosować daty w szczególności w aplikacji Answers.
Być może temat ten nie zainteresuje zaawansowanych użytkowników dobrze obeznanych z funkcjami w BI jednak pomyślałem że blog ten może być świetną formą szkolenia dla pracowników naszej firmy używających BI do bieżącej pracy – tym bardziej że brak jest jakichkolwiek podręczników a i szkoleń firmowych też nie za dużo.
Postaram się więc wyjaśnić w prosty sposób i na przykładach to co jest sednem rożnych systemó BI – czyli grupowanie i agregowanie “w locie” a zrobię to na przykładzie dat.
Często wynika potrzeba grupowania czegoś po częściach dat (roku, miesiącu ). Dla podstawowej daty (będącej wymiarem) takie rozbicie jest wykonane w systemie – stworzona jest też do takiej miary hierarchia (np taka: Rok->Kwartał->Miesiąc->Dekada-Dzień lub w skromniejszej formie: Rok -> Miesiąc -> Dzień – komplet takich atrybutów stanowi tzw: Wymiar czasu i można tworzyć raporty po dowolnym elemencie z tego wymiaru agregując fakty do poziomu np miesiąca,qwartału czy roku. W systemie występje jednak więcej niż jedna data. Np może wystąpić data sprzedaży (która będzie wymiarem czasu) ale może także wystąpić np data odbioru, data płatnośći która jest atrybutem i która występuje w systeme tylko i wyłącznie w postaci YYYY-MM-DD (np. 2009-05-20). Oczywiśćie grupowanie po częściach składowych tej daty jest w aplikacji Answers jak najbardziej możliwe. Przejdźmy jednak do przykładów
Weźmy sobie dla przykładu atrybut daty jakim jest data faktury oraz ilość takich faktur (UWAGA: Dane są fikcyjne )
daty_p1

Read the rest of this entry »

Posted in Answers, Podstawy analizy | No Comments »