Oracle Business Intelligence

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

OBIEE Nawigacja kierowana – jeden pulpit różne raporty

Posted by Marek Gregor on Sierpień 18th, 2009

Wyobraźmy sobie taką sytuację iż mamy personel na poziomie centrali który monitoruje pracę w oddziałach oraz managerów tychże oddziałów. Celem jest stworzenie pulpitu wspólnego dla menadżerów zarówno w centrali jak i w oddziałach. Problem jest w tym ze menadżerowie w centrali chcą widzieć w pierwszej kolejności wyniki oddziałów, natomiast menedżerowie oddziałów chcą widzieć wyniki za które to oni są odpowiedzialni czyli: swoich sklepów/ pracowników itp/itd
W przykładach oprę się na schemacie Sample Sales dostarczany przez Oracla

A więc w schemacie tym mamy wymiar sklepu “Market”

market

Jak widać mamy tutaj Distrykty (nazwijmy je Oddziałami) oraz sklepy. Załóżmy że pracownik centrali chce obserwować wyniki na poziomie oddziałów  zaś kierownicy oddziałów chcą obserwowac wyniki swoich sklepów. Jak napisałem wyżej chcemy aby odbyło sie to na wspólnym dla wszystkich pulpicie pt: Dochody

W tym celu musimy (o ile juz nie mamy) przypisac poszczególnych kierowników Oddziałów do wspolnej grupy  która nazwiemy Oddzialy

na potrzeby tego tematu założę użytkownika Oddziału 1 o nazwie: Adam.Nowak

Dodam też tego uzytkownika grupy ODDZIALY

user-nowak

Stwórzmy dwa raporty jeden na potrzeby pracownika centrali  – nazwiemy go Dochody w oddziałach

dochody_w_oddzialach

Drugi na potrzeby Oddziału 1 – nazwiemy go Dochody oddzału 1

dochody_oddzialu_1

Dodatkowo zróbmy prosty raport który będzie zwracał wynik o ile zaloguje się ktoś z oddziału

W tym celu użyjemy zmiennej GROUP która wyświetla nam do jakich grup prynależy uzytkownik oraz funkcji LOCATE która jest podobna do Funkcji INSTR znanej z wielu języków (w tym SQL) i  zwraca numer znaku szukanego ciągu

Nasza funkcja wyglądać będzie następująco

LOCATE(VALUEOF(NQ_SESSION.GROUP),'ODDZIALY')

a cały raport tak:

raport_warunkowy

Nieważna jest zawartość takiego raportu ważne że zwróci on wiersze wyłacznie gdy uzytkownik będzie należał do grupy ODDZIALY w innym pryzpadku funkcja LOCATE zwróci zero i rekordy zostaną odfiltrowane (brak wyników)

Raport ten posłuży nam jako raport warunkowy nawigacji sterowanej sekcji na pulpicie.

Stwórzmy więc pulpit o nazwie DOCHODY. Jak wspomniałem idea tego pulpitu że jest to jeden wspólny dla całej firmy pulpit do monitorowania dochodów lecz zależnie od stopnia manadżera widzi on różne raporty (bardziej szczegółowe dla manadżera oddziału , mniej szczegółowe dla manadżera w centrali.

Umieśćmy na tym pulpicie dwie sekcje i rozmieśćmy oba raporty: Dochody w oddziałach i Dochody oddzału 1 – każdy w osobnej sekcji.

Teraz każdą z sekcji oznaczamy iż ma byś sterowana poprzez funkcję Nawigacji Sterowanej. Jako raport sterujący wybieramy raport z funkcją LOCATE utworzony poprzednio i dla pierwszej sekcji oznaczamy iż sekcja ma się pokazywać gdy raport nie zwaraca żadnych wierszy

sekcja_nawigacja1

Natomiast w drugiej sekcji  ustawmy odwrotnie czyli opcję Jeśli raport zwraca wiersze

Teraz możemy przetestować pulpit. Logując się jako użytkownik nie należący do grupy ODDZIALY zobaczymy pulpit z raportem przeznaczonym dla centrali:

pulpity_centrala

Natomiast logując się jako pracownik Oddziału Adam Nowak widzimy pulpit z raportem przygotowanym dla oddziału:

pulpit_oddzial

Zauważmy że raport przeznaczony dla oddziału wstępnie przefiltrowaliśmy dla oddziału 1 – oczywiście powiiniśmy zastosować dynamiczne filtrowanie w zależnośći z jakiego oddziału pochodzi uzytkownik logujący się do OBI – tak aby Manager Oddziału 1 widział dane Oddziału 1, Manager oddziału 2 – dane oddziału 2 itd. Zagadnienie to jest szczegółowo poruszone w tutorianu dostępnym na OTN ie – Ja też za parę dni sprobuję pokazać/ przypomnieć jak dla naszego stworzonego pulpitu filtrować dane dynamicznie.

Uff – cięzko mi idzie ale mam nadzieję że się rozkręcę



Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>