Przenoszenie raportów z KR do BI Point
W celu przeniesienia raportów z księgi raportów do BI Pointa należy skorzystać z migratora raportów. Aplikacja ta nazywa się Reports Exporter i znajduje się w katalogu bin\rbexporter:
Aplikacja potrzebuje połączenia z bazą META, w tym celu należy kliknąć przycisk ‘Connect to META’. W nowym oknie konieczne jest podanie nazwy serwera oraz wskazanie bazy META z listy rozwijanej. Domyślnie ustawiona jest autentykacja Windows, która wykorzystuje konto aktualnie zalogowanego użytkownika. Przy wyborze autentykacji ‘SQL Server AuthSentication’ konieczne będzie podanie poświadczeń użytkownika SQL, który posiada dostęp do danej bazy.
Aplikacja, po połączeniu się z bazą META, wyświetli strukturę drzewka raportów, taką samą jaka znajduje się w księdze raportów. W tym miejscu należy wybrać te raporty, które mają zostać wyeksportowane do pliku i kliknąć przycisk ‘Export’. Następnie pojawi się standardowe okno do wskazania lokalizacji zapisu pliku.
przekształcony do raportu SQL.
Po wyborze miejsca zapisu, pojawi się okno do wprowadzenia hasła zabezpieczającego plik. Hasło to będziewymagane przy importowaniu raportów w BI Poincie. Po wpisaniu hasła i wciśnięciu przycisku ‘Export’ definicje raportów zostaną zapisane w pliku z rozszerzeniem .RBD.
W celu zaimportowania raportów w BI Point należy zalogować się do aplikacji, wejść w zakładkę Panel Administratora i wybrać opcję ‘Import z Księgi Raportów’.
W tym oknie utworzony plik .RBD należy przeciągnąć na obszar ze strzałką, bądź też wskazać jego miejsce na dysku.
Po załadowaniu pliku zostanie wyświetlona jego nazwa oraz przycisk ‘Import’, który należy kliknąć, aby przejść do wyboru folderu docelowego w repozytorium BI Point i ukończyć proces importu.
Jeżeli został wskazany błędny plik .RBD można wrócić do poprzedniego ekranu korzystając z ikony „X”.
W każdej z trzech sekcji repozytorium: Połączenia, Modele danych oraz Raporty zostanie utworzony folder ‘Zaimportowane z Księgi Raportów’ a w nich odpowiednie obiekty. W zależności od tego ile źródeł danych wykorzystywały wyeksportowane raporty, tyle zostanie utworzonych połączeń i modeli.
połączeniu!
parametrów (zakładka Zapytanie) oraz mapowań miar\wymiarów (zakładka Nagłówki).
Raporty z miarą dodatkową lub miarą MDX
Aplikacja Reports Exporter nie eksportuje miar dodatkowy oraz miar MDX, z racji której takie miary należy
przenieść ręcznie do aplikacji BI Point.
Poniższy skrypt uruchomiony na bazie REPO wyświetli listę raportów, na których została dodana miara
dodatkowa.
SELECT [RDA_ReportId] as „ID Raportu” ,[LIN_Name] as „Nazwa Raportu” ,[LIN_FolderId] as „ID Folderu” ,[FOL_Name] as „Nazwa folderu” ,[RDA_DefinitionType] as „Typ definicji raportu” ,[RDA_TextDefinition]as „Definicja raportu” ,[LIN_CreatedOn] „Data utworzenia raportu” ,[LIN_ModifiedOn] „Data ostatniej modyfikacji raportu” 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].[[]%-%-%-%-%]%’ |
W celu wyszukania raportów z dodatkowymi miarami MDX należy zmienić warunek z RDA_TextDefinition like „%whatifMeasures%”, na RDA_TextDefinition like '%mdxQuery=%’. |
Ostatni warunek „RDA_TextDefinition like '%data fieldName=”[[]Measures].[[]%-%-%-%-%]%’„ oznacza, że dana miara jest używana na raporcie (jest przeciągnięta na obszar roboczy). Warunek ten można również dodać do skryptu numer 2. |
Data ostatniego otwarcia raportu
Po wykonaniu skryptu numer 1 możemy sprawdzić kiedy raporty z miarą dodatkową lub MDX były ostatnio
otwierane.
W tym celu należy wykonać poniższy skrypt, również w kontekście bazy REPO.
SELECT [LAC_Id] as „ID Akcji” ,[LAC_ActionName] as „Akcja” ,[LAC_ObjectId] as „ID Raportu” ,[LIN_Name] as „Nazwa Raportu” ,[LAC_SessionId] as „ID Sesji” ,[SES_UserLogin] as „Nazwa użytkownika” ,[LAC_DateTime] as „Data” 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] ) |
W tym skrypcie również możemy wybrać czy szukamy raportów z miarami dodatkowymi czy z miarami MDX. Do wyszukania miar dodatkowych służy warunek RDA_TextDefinition like „%whatifMeasures%”(który już jest dodany w powyższym skrypcie),oraz dla miar MDX RDA_TextDefinition like '%mdxQuery=%’. |
W warunku LAC_ActionName like 'Open Report’ można wpisać także 'UpdateReport’, analogicznie wyszukując daty aktualizacji danych raportów. |
Raporty korzystające z tego samego modelu
Po wyeksportowaniu raportów z KR i ich zaimportowaniu do BI Point mogą utworzyć się duplikaty modeli danych. Jeśli wyeksportowane zostaną dwa raporty SQL z takim samym zapytaniem, to w poincie dodadzą się dwa jednakowe modele danych dla każdego z raportów. Poniższe skrypty pozwolą odnaleźć raporty, które mają modele korzystające z takiego samego zapytania. Następnie można takie raporty przepiąć na jeden model, a pozostałe usunąć.
Pierwszy skrypt pokaże listę raportów, modele na których są zrobione, a także id modelu, który ma takie samo
zapytanie jak model raportu. W przypadku jeśli jest więcej takich samych modeli pokaże się najniższe id z grupy
takich samych modeli:
SELECT r.”OBJ_Id” „Id obiektu raportu”, „REP_Id” „Id raportu”, r.”OBJ_Name” „Nazwa raportu”, m.”OBJ_Id” „Id obiektu modelu”, „DMO_Id” „Id modelu”, m.”OBJ_Name” „Nazwa modelu”, smq.ModelId „Id tożsamego modelu” –, * 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; |
Przykład dla zobrazowania. Wyniki zapytania na bazie, gdzie zaimportowano 6 raportów:
Jak widać dla 6 raportów w BI Point stworzyły się 4 modele. 3 raporty (874,875,876) mają już ten sam model dlatego, że były to w KR raporty standardowe podpięte pod ten sam raport źródłowy. Jeśli takie same raporty są podpinane pod jeden źródłowy w KR to w BI Point domyślenie zostaną podpięte pod jeden model. Pięć raportów mimo różnych modeli ma takie samo zapytanie w tych modelach. Widać to w kolumnie Id tożsamego modelu. Dlatego raporty (871,872, 874,875,876) można podpiąć pod jeden model. W tym przypadku jako Id tożsamego modelu jest podane 170, ale tak naprawdę można użyć dowolnego modelu z tej grupy (modele 170,171,173). Wartość 170 jest wpisana jako wartość grupująca, pokazująca, które elementy mają wspólne zapytanie. Raport 873 ma model i zapytanie inne niż pozostałe raporty. Dlatego tego raportu nie można przepiąć i musi
zostać w obecnej formie. Po zdefiniowaniu, które raporty mają wspólny model należy wykonać update przepinający je na jeden wspólny. Update w kontekście opisanego powyżej przykładu wygląda następująco:
UPDATE rb.”DataModelsReports” SET „DMR_DMID” = 173 WHERE „DMR_REPID” IN (871,872) |
Od momentu wykonania tego update wszystkie przykładowe raporty będą korzystać z tego samego modelu. Ostatnim krokiem, który nie jest konieczny, jest usunięcie nieużywanych modeli. Można je usunąć ręcznie z poziomu aplikacji BI Point. Pomóc może w tym poniższy skrypt, które wylistuje nieużyte w żadnym raporcie modele (zapytanie pokaże też modele, które są użyte w jakimś dashboardzie, ale nie są użyte w raporcie!).
SELECT m.”OBJ_Id” „Id obiektu modelu”, „DMO_Id” „Id modelu”, m.”OBJ_Name” „Nazwa modelu” 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 |