Usage Tracking in de Oracle BI Suite
Oktober 2009 - Bij veel implementaties van OBIEE is er een behoefte van de klant om inzicht te krijgen in het klikgedrag van eindgebruikers. Welke rapportages en dashboards worden wanneer en hoe vaak gebruikt? Dit kan gebruikt worden om de dashboards beter af te stemmen op het gedrag en de behoefte van de organisatie, maar bijvoorbeeld ook op het toerekenen van kosten naar divisies en afdelingen gebaseerd op de resources die ze gebruiken.
In de Oracle BI Suite is een tot nu redelijk onbelichte module die hiervoor gebruikt kan worden. Deze module heet Usage Tracking en werkt met statistieken over het gebruik die in de BI Server van OBIEE zijn vastgelegd. Het resultaat hiervan kan ook gebruikt worden op bijvoorbeeld performance optimalisatie slagen toe te passen bij veel gebruikte resources.
In dit whitebook zal ik aangeven hoe je Usage Tracking kunt installeren, welke log gegevens worden bijgehouden en een aantal rapporten als voorbeeld laten zien.
Installatie van Usage Tracking
Het installeren van Usage Tracking in Oracle gaat als volgt:
- Creeer een user usage_tracking in de back-end database (of gebruik een bestaande user).
- Creeer de tabel S_NQ_ACCT, het script hiervoor is: ...\OracleBI\server\Schema\ SAACCT.Oracle.sql.
- Importeer S_NQ_ACCT in de OBI Administration Tool.
- Creeer de connection pool voor Usage Tracking.
- Pas de ...\OracleBI\server\Config\NQSConfig.ini aan.
Zet ENABLE = YES;
Zet de PHYSICAL_TABLE_NAME en CONNECTION_POOL. Gebruik hiervoor de waarden zoals die zichtbaar zijn in de physical layer
- Herstart de BI Server.
Architectuur van Usage Tracking in OBIEE

Bovenstaand figuur geeft de architectuur van OBIEE weer. We zullen dit plaatje gebruiken om de werking van Usage Tracking uit te leggen.
Een gebruiker vraagt een Answers rapport op of raadpleegt een Dashboard pagina. Een logische query wordt naar de BI Server gezonden.
De logische query wordt door de BI Server vertaald in 1 of meerdere database queries. Als caching in OBIEE niet wordt gebruikt, worden de database queries direct naar de back-end database gezonden. Als de caching aan staat worden de database queries eerst naar de cache gezonden. Als dit geen resultaten oplevert worden de database queries naar de back-end database gezonden en vervolgens in de cache geplaatst. Levert dit wel resultaten op, dan komt het resultaat direct uit de cache.
Het resultaat wordt teruggezonden naar de presentatie server.
De logische query resulteert in 1 record in de logging tabel (of het logging bestand).
De loggegevens
In het logbestand of de logtabel worden de volgende gegevens vastgelegd:
|
Soort Veld |
Beschrijving |
||
|
User |
USER_NAME |
De naam van de gebruiker die de logische query naar de BI Server stuurt. Dit veld kan gebruikt worden om aan een gebuikersdimensie te joinen, op deze manier kan dan ook gerapporteerd worden op het niveau van afdeling etc. |
|
|
User |
RUNAS_USER_NAME |
De naam van de impersonated gebruiker. Dit veld is over het algemeen leeg. |
|
|
Datum |
START_DT |
De startdatum van de logische query. (zonder tijd). Dit veld kan gebruikt worden om aan een tijdsdimensie op dagniveau te joinen, op deze manier kan dan ook gerapporteerd worden op het niveau van week, maand etc. |
|
|
Datum |
START_TS |
De startdatum van de logische query. (met tijd). Dit veld wordt over het algemeen niet gebruikt in rapportages, maar kan wel handig zijn bij het foutzoeken. |
|
|
Datum |
START_HOUR_MIN |
Het uur en de minuut van de startdatum van de logische query. Dit veld kan gebruikt worden om aan een tijdsdimensie op uurniveau te joinen. |
|
|
Datum |
END_DT |
De einddatum van de logische query. (zonder tijd). Dit veld wordt over het algemeen niet gebruikt in rapportages. |
|
|
Datum |
END_TS |
De einddatum van de logische query. (met tijd). Dit veld wordt over het algemeen niet gebruikt in rapportages. |
|
|
Datum |
END_HOUR_MIN |
Het uur en de minuut van de einddatum van de logische query. Dit veld wordt over het algemeen niet gebruikt in rapportages. |
|
|
Cache |
CACHE_IND_FLG |
Y geeft een cache hit aan, N een cache miss. Dit veld in combinatie met de volgende 2 kan gebruikt worden om de performance van cache van de BI Server te optimaliseren. |
|
|
Cache |
NUM_CACHE_HITS |
Aantal cache hits. |
|
|
Cache |
NUM_CACHE_INSERTED |
Aantal inserts in de cache. |
|
|
Duur |
COMPILE_TIME_SEC |
Aantal seconden dat de BI Server nodig heeft om de query te compileren. |
|
|
Duur |
CUM_DB_TIME_SEC |
Aantal seconden dat de BI Server wacht op de back-end database om de query uit te voeren. Dit veld in kan gebruikt worden om de performance van de back-end database te optimaliseren. |
|
|
Duur |
TOTAL_TIME_SEC |
Aantal seconden dat de client applicatie moet wachten op de BI Server bij de uitvoering van een query. |
|
|
Aantal |
NUM_DB_QUERY |
Het aantal queries verzonden naar de back-end databases (inclusief cache) voor de uitvoering van de logische query. |
|
|
Aantal |
CUM_NUM_DB_ROW |
Aantal rijen geretourneerd door de back-end database (inclusief cache). |
|
|
Aantal |
ROW_COUNT |
Aantal rijen geretourneerd door de BI Server. |
|
|
Fout |
SUCCESS_FLG |
De status van de query na uitvoering. |
|
|
Fout |
ERROR_TEXT |
Foutboodschap van de BI Server of de back-end database. |
|
|
Server |
NODE_ID |
Naam van de BI Server. Dit is een constante. |
|
|
BI Repository |
REPOSITORY_NAME |
De naam van de BI repository. Dit is een constante. |
|
|
BI Repository |
PRESENTATION_NAME |
Naam van de presentatie catalogus. |
|
|
BI Repository |
SUBJECT_AREA_NAME |
Naam van het business model. |
|
|
Query |
QUERY_SRC_CD |
De bron van de logische query, bijvoorbeeld ‘Report’, ‘ValuePrompt’, ‘GlobalFilter’. Bij rapportage over het gebruik van dashboards kunnen we filteren op ‘Report’. |
|
|
Query |
QUERY_TEXT |
De SQL van de logische query. |
|
|
Dashboard |
SAW_DASHBOARD |
Padnaam van het dashboard. |
|
|
Dashboard |
SAW_DASHBOARD_PG |
Paginanaam van het dashboard. |
|
|
Answers |
SAW_SRC_PATH |
Padnaam van het answers rapport. |
|
Voorbeeld toepassingen
In de inleiding heb ik aangegeven waarvoor Usage Tracking gebruikt kan worden. Bijvoorbeeld het toerekenen van het gebruik van dashboards aan gebruikers of afdelingen. Dit kan met onderstaande query die het gebruik weergeeft van de dashboards per gebruiker per maand:
select user_name gebruiker ,to_char(trunc(start_dt,'MONTH'),'YYYY MM') maand ,saw_dashboard dashboard ,saw_dashboard_pg dashboard_pagina ,sum(total_time_sec) duur_tot ,round(avg(total_time_sec),2) duur_gem ,count(1) aantal from s_nq_acct where query_src_cd = 'Report' and saw_dashboard is not null group by user_name ,trunc(start_dt,'MONTH') ,saw_dashboard ,saw_dashboard_pg order by user_name ,trunc(start_dt,'MONTH') ,saw_dashboard ,saw_dashboard_pg ;

Een query die de top 10 oplevert van rapporten met queries die gemiddeld het langst duren in de back-end database kan een goed startpunt zijn voor het aanpakken van performance bottlenecks in de back-end database:
select rapport ,db_duur_avg ,db_duur_max ,db_duur_min ,db_duur_sum ,aantal ,positie from (select saw_src_path rapport ,round(avg(cum_db_time_sec),2) db_duur_avg ,max(cum_db_time_sec) db_duur_max ,min(cum_db_time_sec) db_duur_min ,sum(cum_db_time_sec) db_duur_sum ,count(1) aantal ,rank() over (order by avg(cum_db_time_sec) desc) positie from s_nq_acct where start_dt > add_months(sysdate,-1) and saw_src_path is not null and cache_ind_flg = 'N' group by saw_src_path ) where positie <= 10 ;

Conclusie
Usage Tracking is eigenlijk “een dashboard van het dashboard” en is gebaseerd op het gebruik en de inrichting van de onderliggende architectuur van OBIEE, de BI Server.
Aan de voorkant (presentatie van dashboards en rapportages) kan het zinvolle informatie opleveren over de mate waarin de organisatie gebruik maakt van de geïmplementeerde dashboards (of beter nog: niet gebruik maakt). Informatie hiervan kan gebruikt worden om dashboard anders in te delen, zodat belangrijke informatie eenvoudiger gevonden kan worden.
Usage Tracking kan aan de achterkant (het gebruik van data sources) ingezet worden om heel gericht aan database optimalisatie te doen, voor bijvoorbeeld enkel die tabellen die heel frequent gebruikt worden.
Referenties
Oracle Business Intelligence Server Administration Guide Version 10.1.3.2
Over de auteur
Bob Haverkort is BI consultant bij AORTA BI Solutions. Hij is analytisch ingesteld en ervaren in het technisch implementeren van Oracle BI oplossingen. Bob heeft de afgelopen 8 jaar gewerkt in en rondom Oracle BI projecten en zich gespecialiseerd in het technisch implementeren van datawarehouse concepten en modellen. Hij heeft daarbij ruime ervaring opgedaan met Oracle Warehouse Builder, PL/SQL en OBI EE. Zijn specialisme ligt op het inrichten van de BI Server (metadata laag) in combinatie met het aanleveren van data uit de database. Bob is goed in staat om snel en grondig een vertaling te maken van functionele eisen en wensen naar een technische implementatie.

Reacties
Nieuwe reactie inzenden