|
Forums, dernières contributions
BOXiR2: lister les objets utilisés par les rapports ?
Salut,
Comme dans toutes les versions de BO je me demande comment on peut récupérer quels objets sont utilisés dans quels rapports ?
Module Audit ? Query Builder ? autres solutions ?
Merci
petite précision pour corser le tout lol: je parle de rapports Webi (pas de .rep) et je suis sur Linux
Plusieurs solutions s'offrent a toi, BO commercialise un outil pour le faire, Metadata Manager.
il existe également des solutions tierces, ma société en a développé une notamment et nous l'implémentons dans le cadre de nos prestations.
Enfin il peut exister une solution 'gratuite' pour toi, qui meme si elle n'est pas idéale à le mérite d'exister.
En effet si tu actives l'audit au niveau du WebIntelligence Report Server à chaque rafraichissement de rapport, celui-ci enregistre dans l'audit les objets qui sont utilisés dans le rapport qui est lancé.
Donc via une requête SQL tu est capable de te sortir la liste des rapports avec les objets de l'univers utilisés.
Trois grosses limitations :
- Tu ne verras pas les objets des rapports qui n'ont jamais été exécutés (vu qu'ils ne sont pas dans l'audit).
- Tu ne pourras pas sortir la liste des objets d'un univers qui ne sont utilisées dans aucun rapport (ce qui est pourtant un indicateur intéréssant).
- Si tu as plusieurs objets possédant le même nom dans ton univers tu aura du mal a les distinguer, l'audit ne contenant que le nom de l'objet (pas de DSO.ID, ni de classe ou sous classe ou est l'objet...).
D'ailleurs je viens de remettre la main sur le SQL qu'il te faut (pour une base d'audit sous Oracle) :
select distinct unv.detail_text universe_name,doc.detail_text document_name,obj.detail_text object_name
from
(select ad.event_id,ad.server_cuid,to_char(ad.detail_text) detail_text
from audit_detail ad, audit_event ae,event_type et,detail_type dt
where ad.event_id=ae.event_id
and ad.server_cuid=ae.server_cuid
and et.event_type_id=ae.event_type_id
and et.event_type_description='Document refresh'
and dt.detail_type_id=ad.detail_type_id
and dt.detail_type_description='Universe name'
) unv,(select ad.event_id,ad.server_cuid,to_char(ad.detail_text) detail_text
from audit_detail ad, audit_event ae,event_type et,detail_type dt
where ad.event_id=ae.event_id
and ad.server_cuid=ae.server_cuid
and et.event_type_id=ae.event_type_id
and et.event_type_description='Document refresh'
and dt.detail_type_id=ad.detail_type_id
and dt.detail_type_description='Object Name'
) obj,(select ad.event_id,ad.server_cuid,to_char(ad.detail_text) detail_text
from audit_detail ad, audit_event ae,event_type et,detail_type dt
where ad.event_id=ae.event_id
and ad.server_cuid=ae.server_cuid
and et.event_type_id=ae.event_type_id
and et.event_type_description='Document refresh'
and dt.detail_type_id=ad.detail_type_id
and dt.detail_type_description='Document name'
) doc
where unv.event_id=obj.event_id
and unv.event_id=doc.event_id
and unv.server_cuid=obj.server_cuid
and unv.server_cuid=doc.server_cuid
merci Joel, c'est complet comme d'hab' ;-)
Outre les solutions présentées par Joel Da Costa, tu peux trouver sur le site de boboard (http://www.forumtopics.com/busobj/index.php) dans la rubrique téléchargement un rapport Deski XI qui utilise une macro VBA et l'outil d'edition Grep pour parser et documenter les WID d'un filestore BOXIr2 dans une base de données. Ceci te permettra de bypasser une des limitations (celle qui est lié au fait qu'il faut avoir rafraichi le rapport au moins une fois). Cette méthode a le mérite d'exister.
|