Reports Exporter

Migration des rapports de KR vers BI Point

Pour transférer les rapports du Livre de rapports dans BI Point, utilisez l’outil de migration des rapports. L’application en question s’appelle Reports Exporter et se trouve dans le dossier bin\rbexporter :

L’application nécessite la connexion à la base META. Pour cela, cliquez sur le bouton ‘Connect to META’.  Dans la fenêtre ouverte, tapez le nom du serveur et sélectionnez la base META à partir de la liste déroulante. L’authentification Windows qui utilise le compte de l’utilisateur actuellement connecté est définie par défaut. Lorsque vous sélectionnez le mode d’authentification ‘SQL Server Authentication’, il sera nécessaire de définir les données d’authentification de l’utilisateur SQL qui a accès à la base concernée.

Après s’être connecté à la base META, l’application affiche la structure arborescente de rapports identique à celle disponible dans le Livre de rapports. Ici, il faut sélectionner les rapports à exporter dans le fichier et cliquer sur le bouton ‘Export’.  Ceci fait, la fenêtre standard permettant d’indiquer l’emplacement d’enregistrement du fichier apparaît.

Seuls les rapports OLAP, SQL et Tableau peuvent être exportés. Le rapport Tableau sera converti en rapport SQL.

Les mesures MDX, les mesures supplémentaires et les fonctions SQL ne peuvent pas être exportées !

Une fois l’emplacement d’enregistrement choisi, la fenêtre permettant d’entrer le mot de passe visant à protéger le fichier apparaît. Ce mot de passe sera demandé pour importer les rapports dans BI Point. Une fois le mot de passe entré et le bouton ‘Export’ cliqué, les définitions des rapports seront enregistrées dans un fichier avec l’extension .RBD.

Pour importer les rapports dans BI Point, connectez-vous à l’application, allez dans l’onglet Panneau d’administrateur et choisissez l’option ‘Import à partir du Livre de rapports’.

Dans cette fenêtre, le fichier .RBD créé doit être glissé et déposé dans la zone avec la petite flèche ou il faut indiquer son emplacement sur le disque.

Une fois le fichier chargé, son nom est affiché ainsi que le bouton ‘Import’ qu’il faut cliquer pour passer à la sélection du dossier de destination dans le référentiel BI Point et terminer le processus d’import.

Si un fichier .RBD erroné est indiqué, vous pouvez revenir à la fenêtre précédente en cliquant sur l’icône « X » .

Dans chacune de trois sections du référentiel : Connexions, Modèles de données et Rapports, le dossier ‘Importé à partir du Livre de rapports’ sera créé avec les objets correspondants. Le nombre de connexions et de modèles créés va correspondre au nombre de sources utilisées par les rapports exportés.

Une fois l’opération d’import effectuée, il est nécessaire de compléter les données d’authentification pour chaque connexion créée!

En ce qui concerne les modèles de données créés, il est recommandé de vérifier si les paramètres (onglet Requête) et les mappages\dimensions (onglet En-têtes) sont corrects.

Rapports contenant une mesure additionnelle ou une mesure MDX

L’application Reports Exporter n’exporte pas les mesures supplémentaires ni les mesures MDX, c’est pourquoi ces mesures doivent être transférées manuellement dans l’application BI Point.
Le script ci-dessous, exécuté sur la base REPO, affichera la liste des rapports contenant une mesure supplémentaire.

SELECT [RDA_ReportId] as "ID Rapport" ,[LIN_Name] as "Nom du rapport" ,[LIN_FolderId] as "ID du dossier" ,[FOL_Name] as "Nom du dossier" ,[RDA_DefinitionType] as "Type de définition du rapport"  [RDA_TextDefinition] as "Définition du rapport" ,[LIN_CreatedOn] "Date de création du rapport" ,[LIN_ModifiedOn] "Date de dernière modification du rapport" FROM [RB].[ReportsData] RD join [RB].[Reports] R on RD.RDA_ReportId=R.REP_Id join [RB].[Links] L on L.LIN_ReportId=RD.RDA_ReportId join [RB].[Folders] F on L.LIN_FolderId=F.FOL_Id where RDA_TextDefinition like '%whatifMeasures%' AND RDA_TextDefinition like '%data fieldName="[[]Measures].[[]%-%-%-%-%]%'

Pour rechercher les rapports avec des mesures MDX supplémentaires, il faut modifier la condition de RDA_TextDefinition like « %whatifMeasures% », par RDA_TextDefinition like ‘%mdxQuery=%’.
La dernière condition « RDA_TextDefinition like ‘%data fieldName= »[[]Measures].[[]%-%-%-%-%]%’ » signifie que la mesure est utilisée dans le rapport (elle est glissée dans la zone de travail). Cette condition peut également être ajoutée au script numéro 2.

Date de dernière ouverture du rapport

Après l’exécution du script numéro 1, nous pouvons vérifier quand les rapports avec une mesure supplémentaire ou MDX ont été ouverts pour la dernière fois.
Pour ce faire, il faut exécuter le script ci-dessous, également dans le contexte de la base REPO.

SELECT
[LAC_Id] as "ID Action"
,[LAC_ActionName] as "Action"
,[LAC_ObjectId] as "ID Rapport"
,[LIN_Name] as "Nom du Rapport"
,[LAC_SessionId] as "ID Session"
,[SES_UserLogin] as "Nom d'utilisateur"
,[LAC_DateTime] as "Date"
FROM [NAZWA_BAZY_LOG].[dbo].[LogActions] LA
join [NAZWA_BAZY_LOG].[dbo].[Sessions] S on LA.LAC_SessionId=S.SES_ID
join [NAZWA_BAZY_REPO].[rb].[Links] L on LAC_ObjectId=L.LIN_ReportId
join [NAZWA_BAZY_REPO].[rb].[ReportsData] RD on L.LIN_ReportId=RD.RDA_ReportId
where LAC_ActionName like 'Open Report' and RDA_TextDefinition like '%whatifMeasures%'
and [LAC_Id] in
(select max(lac_id)
from [NAZWA_BAZY_LOG].[dbo].[LogActions] la
join [NAZWA_BAZY_LOG].[dbo].[Sessions] S on
LA.LAC_SessionId=S.SES_ID
join [NAZWA_BAZY_REPO].[rb].[Links] L on
LAC_ObjectId=L.LIN_ReportId
join [NAZWA_BAZY_REPO].[rb].[ReportsData] RD on
L.LIN_ReportId=RD.RDA_ReportId
where [LAC_ActionName] like'Open Report' and
RDA_TextDefinition like '%whatifMeasures%'
group by [LAC_ObjectId] )

Dans ce script, nous pouvons également choisir si nous recherchons des rapports avec des mesures supplémentaires ou des mesures MDX.
Pour rechercher des mesures supplémentaires, on utilise la condition RDA_TextDefinition like « %whatifMeasures% » (qui est déjà incluse dans le script ci-dessus),
et pour les mesures MDX, la condition RDA_TextDefinition like ‘%mdxQuery=%’.
 Dans la condition LAC_ActionName like ‘Open Report’, on peut également utiliser ‘UpdateReport’ pour rechercher, de manière similaire, les dates de mise à jour des rapports.

Rapports utilisant le même modèle

Après l’exportation des rapports depuis KR et leur importation dans BI Point, des doublons de modèles de données peuvent apparaître. Si deux rapports SQL avec la même requête sont exportés, BI Point créera deux modèles de données identiques, un pour chaque rapport. Les scripts ci-dessous permettent d’identifier les rapports qui utilisent des modèles basés sur la même requête. Ensuite, il est possible de rattacher ces rapports à un seul modèle et de supprimer les autres.

Uwaga
Les scripts ne fonctionneront que pour les rapports SQL transférés depuis KR à l’aide de l’exporteur. Les scripts doivent être exécutés dans le contexte de la base BI Point, et avant toute modification, une sauvegarde de la base doit être réalisée !

Le premier script affichera la liste des rapports, les modèles sur lesquels ils sont basés, ainsi que l’ID du modèle qui possède la même requête que le modèle du rapport. Dans le cas où il y a plusieurs modèles identiques, l’ID le plus bas du groupe de modèles identiques sera affiché.

SELECT r. »OBJ_Id » « Id de l’objet du rapport »,
« REP_Id » « Id du rapport »,
r. »OBJ_Name » « Nom du rapport »,
m. »OBJ_Id » « Id de l’objet du modèle »,
« DMO_Id » « Id du modèle »,
m. »OBJ_Name » « Nom du modèle »,
smq.ModelId « Id du modèle identique »
–, *
FROM rb. »RepositoryObjects » r
LEFT JOIN rb. »Reports » ON « REP_ObjId » = r. »OBJ_Id »
LEFT JOIN rb. »DataModelsReports » ON « DMR_REPID » = « REP_Id »
LEFT JOIN rb. »DataModels » ON « DMR_DMID » = « DMO_Id »
LEFT JOIN rb. »RepositoryObjects » m ON « DMO_ObjId » = m. »OBJ_Id »
LEFT JOIN rb. »DataSources » ON « DS_Id » = « DMO_DataSourceId »
LEFT JOIN rb. »DataSourceDefinitions » ON « DSD_Id » = « DS_DefinitionId »
LEFT JOIN rb. »DataModelsQueries » mq ON mq. »DMQ_ModelId » = « DMO_Id »
LEFT JOIN (
SELECT MIN(« DMQ_ModelId ») ModelId, « DMQ_Query »
FROM rb. »DataModelsQueries »
GROUP BY « DMQ_Query »
) smq ON mq. »DMQ_Query » = smq. »DMQ_Query »
WHERE r. »OBJ_Type » = 4
AND « DSD_Definition » is null
AND m. »OBJ_DestinationElementType » = ‘DataSetMSSQL’
ORDER BY 7,4;

Exemple pour illustration. Résultats de la requête sur la base où 6 rapports ont été importés :

Comme on peut le voir, pour 6 rapports dans BI Point, 4 modèles ont été créés. Trois rapports (874, 875, 876) partagent déjà le même modèle parce qu’ils étaient des rapports standards dans KR liés au même rapport source.
Si des rapports identiques sont liés à un même rapport source dans KR, dans BI Point ils seront automatiquement associés à un seul modèle. Cinq rapports, bien qu’ayant des modèles différents, ont la même requête dans ces modèles. Cela se voit dans la colonne « Id du modèle identique ». C’est pourquoi les rapports (871, 872, 874, 875, 876) peuvent être associés à un seul modèle. Dans ce cas, l’Id du modèle identique indiqué est 170, mais on peut en réalité utiliser n’importe quel modèle de ce groupe (modèles 170, 171, 173). La valeur 170 est utilisée comme valeur de regroupement, montrant quels éléments ont la même requête. Le rapport 873 a un modèle et une requête différents des autres rapports. C’est pourquoi ce rapport ne peut pas être rattaché et doit rester sous sa forme actuelle. Après avoir défini quels rapports partagent un modèle commun, il faut effectuer une mise à jour pour les rattacher à un seul modèle commun. La mise à jour, dans le contexte de l’exemple décrit ci-dessus, est la suivante :

 UPDATE rb. »DataModelsReports » SET « DMR_DMID » = 173 WHERE « DMR_REPID » IN (871,872)

À partir du moment où cette mise à jour est effectuée, tous les rapports d’exemple utiliseront le même modèle. La dernière étape, qui n’est pas obligatoire, consiste à supprimer les modèles inutilisés. Ils peuvent être supprimés manuellement depuis l’application BI Point. Le script ci-dessous peut aider en listant les modèles qui ne sont utilisés dans aucun rapport (la requête affichera également les modèles utilisés dans certains tableaux de bord, mais pas dans un rapport !).

SELECT m. »OBJ_Id » « Id de l’objet du modèle »,
« DMO_Id » « Id du modèle »,
m. »OBJ_Name » « Nom du modèle »
FROM rb. »RepositoryObjects » m
LEFT JOIN rb. »DataModels » ON « DMO_ObjId » = m. »OBJ_Id »
LEFT JOIN rb. »DataModelsReports » ON « DMR_DMID » = « DMO_Id »
WHERE « DMR_REPID » IS NULL

Czy ten artykuł był pomocny?