Power BI – eksport raportów z portalu przy pomocy Powershell

PowerBI_ExportFromServicePowershell_05

W ramach dzisiejszego wpisu powiemy sobie jak w prosty sposób wyeksportować na dysk wszystkie raporty opublikowane na powerbi.com za pomocą skryptu Powershell. Zapraszam do lektury!

Może się zdarzyć sytuacja, że będziemy chcieli wyeksportować raport lub raporty z powerbi.com. O tym jak to zrobić raczej nie trzeba mówić, wystarczy zalogować się do serwisu i tam w odpowiednim workspace znaleźć upragniony raport, otworzyć go i wybrać opcję eksportu dostępną z głównego menu:

Co jednak w przypadku gdy raportów jest dużo? Nie pozostaje nam nic innego jak uzbroić się w cierpliwość, trochę kawy i klikać jeden po drugim. Jednakże nie jest to jedyna możliwość! Możemy również zatrudnić naszego starego przyjaciela jakim jest Powershell i wykorzystać dostępne cmdlety – zbudujmy taki skrypt razem.

W pierwszym kroku zdefiniujemy sobie ścieżkę gdzie będziemy chcieli zachować nasze wyeksportowane raporty. W moim przypadku będzie to dedykowany folder na moim pulpicie:

Obie ścieżki zachowałem w zmiennej aby móc później się do nich odwołać. Oczywiście folder na raporty może nie istnieć więc ja przy każdym wywołaniu skryptu będę go usuwał i tworzył na nowo za pomocą odpowiedniego wywołania sekwencji komend Set-Location Remove-Item oraz New-Item:

Warto zwrócić uwagę, że przy Remove-Item usuwamy rekursywnie wszystkie podfoldery i pliki znajdujące się w folderze więc warto być ostrożnym. Opcja -ErrorAction Ignore została dodana aby zignorować możliwe błędy np. gdy folder nie istnieje (akceptowalny w moim przypadku skrót:)). Na końcu przechodzimy do stworzonego przez nas folderu za pomocą Set-Location.

Gdy mamy już gotowe miejsce gdzie będziemy eksportować raporty musimy zalogować się do Power BI. Do tego musimy mieć zainstalowany moduł PowerBI, jeśli go nie macie nalezy go zainstalować komendą Install-Module:

Następnie logujemy się do serwisu komendą:

Komenda ta spowoduje pojawienie się okna logowania gdzie musimy podać nasze dane uwierzytelniające. Oczywiście jeśli nasz skrypt nie byłby skryptem wykonywanym na żądanie moglibyśmy zarejestrować aplikację i logować się automatycznie ale na ten moment sobie to podarujemy.

Przechodzimy do działania na serwisie powerbi.com. Jak już wspomniałem naszym celem jest eksport wszystkich raportów ze wszystkich workspace’ów dlatego wylistujmy je sobie komendą Get-PowerBIWorkspace:

Komenda ta oczywiście dosyć dużo informacji o Workspace’ach ale my jedyne co potrzebujemy to jedynie identyfikator i nazwa dlatego też tylko te właściwości pobrałem przy pomocy komendy Select-Object. Całość zapisałem w zmiennej o nazwie Workspaces do późniejszego użycia.

W kolejnym kroku będziemy iterowali po każdym workspace, a zrobimy to prostą pętelką foreach:

Raporty o tych samych nazwach mogą się powtarzać pomiędzy Workspace dlatego też zrobimy sobie w naszej lokalizacji foldery o takiej nazwie jak Workspace’y. Tak więc na poniższym kawałku skryptu widzimy następujące czynności:

  1. wyświetlamy bieżący workspace
  2. tworzymy folder z taką nazwą jak bieżący workspace
  3. tworzymy zmienną z pełną ścieżką do folderu dla bieżącego workspace
  4. przechodzimy do wyżej wymienionego folderu

Pamiętamy, że jesteśmy w pętli iterującej po workspace’ach więc przechodząc dalej powinniśmy przejść po wszystkich raportach. Tak więc musimy zapisać sobie listę raportów po której będziemy się poruszać, a zrobimy to za pomocą Get-PowerBIReport i podobnie jak w poprzednim przypadku pobieramy jedynie Id oraz nazwę:

Pętla eksportująca przedstawia się następująco:

zmienna $ReportExportName przechowuje nazwę bieżącego raportu i dodajmy do tego rozszerzenie pbix. Dodałem dodatkowo sprawdzenie za pomocą funkcji warunkowej, aby ignorować wszystkie raporty, które zawierają statystyki użycia, których wyeksportować nie możemy (jeśli mamy inne warunki do spradzenia nic nie stoi na przeszkodzie aby je tutaj umieścić). Sam eksport to wywołanie kolejnej komendy, a mianowicie Export-PowerBIReport.

Cały skrypt przedstawia się w następujący sposób:

Oczywiście nie zadziała on w każdym możliwym przypadku bo niektórych raportów po prostu nie da się eksportować (np. te z włączonym Incremental Load) ale w wielu przypadkach sprawdzi się on bez problemu. Po uruchomieniu wszystkie pbix znalazły się na moim dysku w odpowiednich folderach:

Myślę, że możliwości użycia Powershell w Power BI są całkiem spore i z tego miejsca zachęcam do zapoznania się z poszczególnymi cmdletami których nie jest tak dużo – dokumentację znajdziecie tutaj. Mam nadzieję, że ten krótki artykuł przypadł Wam do gustu, a ze swojej strony mogę powiedzieć, że jeszcze z całą pewnością wrócimy na blogu do użycia Powershell w PowerBI. Pozdrawiam.

Follow me

Adrian Chodkowski

SQL geek, Data enthusiast, Consultant & Developer
Adrian Chodkowski
Follow me

1 Comment

  1. AvatarJesse

    Where is the “like” button on this post? Good work. It’s nice to see how using PowerShell, we can do so many more things.

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *