Loading…

READY TO DEAL WITH YOUR DATA?

Get some tips on how to do that!
Start exploring

Power BI Tips & Tricks – Power BI Desktop internals

Celem serii Power BI Tips & Tricks docelowo będzie wskazywanie rozwiązań dla użytkowników biznesowych, lecz dzisiaj jeszcze postanowiłem podzielić się smaczkiem dla “geek’ów”, a konkretniej dla konsultantów BI obeznanych z SQL Server Analysis Services (SSAS) w trybie tabelarycznym. Otóż okazuje się, że modele tworzone w aplikacji Power BI Desktop są uruchamiane we wbudowanym silniku SSAS. Ale po kolei…

Gdy uruchamiasz aplikację Power BI Desktop, budujesz w niej model danych, a następnie analizujesz dane i tworzysz raporty, w tle uruchamiany jest wbudowany silnik – kropka w kropkę taki, jak silnik tabelaryczny SSAS. Ba, można nawet się do niego podłączyć w taki sam sposób, jak do klasycznej instancji SSAS.

Dostęp do modelu Power BI przez SQL Server Management Studio

Co musisz zrobić, żeby podłączyć się do modelu Power BI jak do serwera SSAS? Musisz znać port, na którym działa uruchomiona w tle usługa obsługująca model. Znajdziesz go w pliku msmdsrv.port.txt przechowywanym w katalogu C:\Users\{nazwa.użytkownika}\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace{identyfikator}\Data. Alternatywnie możesz użyć polecenia netstat w konsoli Windows, by odnaleźć numer portu, ale prostsza wydaje się być metoda z odczytaniem pliku tekstowego.

Potem już jest prosto – wystarczy mieć zainstalowaną lokalnie aplikację SQL Server Management Studio (SSMS). Po nazwie serwera / maszyny podaj po dwukropku numer portu z pliku i gotowe.

image

Po podłączeniu się do modelu widok jest niemal taki sam, jak po podłączeniu się do instancji tabelarycznej SSAS. Poniżej widok okna Object Explorer aplikacji SSMS w wersji SQL Server 2017 (SSMS v17.0):

image

Warto zwrócić uwagę na numer wersji – 14.0 (co sugerowałoby, że silnik SSAS wbudowany w Power BI jest nowszy niż ten, który jest używany w SQL Server 2016 (wersja 13.0). Po podłączeniu się do modelu możesz używać zapytań DAX i MDX, by wydobywać dane, zupełnie jak w przypadku baz na typowej instancji SSAS.

Nie uda się wykonać kopii zapasowej modelu Power BI:

image

Można za to zeskryptować model do formatu JSON i – tu uwaga – stworzyć na bazie definicji JSON bazę danych w SSAS 2017!!! (na SSAS 2016 się nie uda, silnik Power BI jest nowszy). Definicje połączeń do źródeł danych będą do zmiany przed procesowaniem takiej bazy (pozostaje tam provider Microsoft.PowerBI.OleDb), ale sam fakt, że taka operacja odtworzenia modelu Power BI na serwerze SSAS jest wykonalna, dobrze wróży na przyszłosć integracji Power BI i SQL Server :-)

Poniżej namacalny dowód – odtworzona z pliku JSON baza SSAS 2017 w trybie tabelarycznym:

image

Monitorowanie zapytań przy użyciu SQL Server Profiler

Możesz też podłączyć się do modelu Power BI, by śledzić zapytania DAX, które są wykonywane w czasie, gdy testujesz raporty. Jak? Tak samo, jak w przypadku aplikacji SSMS – podajesz nazwę maszyny i po dwukropku numer portu. Takie podłączenie pozwoli Ci podejrzeć, jakie wizualizacje w Power BI mogą generować problemy wydajnościowe, tudzież, które atrybuty czy tabele są problematyczne z punktu widzenia szybkości działania modelu. Jeśli zadaniem będzie optymalizacja wybranych analiz, ta technika może okazać się szalenie przydatna.

We wspomnianym już katalogu C:\Users\{nazwa.użytkownika}\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace{identyfikator}\Data znajdziesz też plik FlightRecorderCurrent.trc – klasyczny plik SQL Trace z nagranymi ostatnio wykonanymi operacjami na modelu (komendy i zapytania). Aby otworzyć ten plik, musisz mieć zainstalowaną aplikację SQL Server Profiler 17 (dla SQL Server 2017) lub SQL Server 2016 Profiler. W tym drugim przypadku niezbędne jest jednak posiadanie w katalogu definicji śladów aplikacji Profiler (zwyczajowo C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Profiler\TraceDefinitions) pliku Microsoft Analysis Services TraceDefinition 14.0.0.xml (dostępny wraz z nowszą wersją aplikacji Profiler). Przykład podglądu zapytania DAX wykonanego na modelu Power BI w SQL Server Profiler 17 demonstruję poniżej.

image

Oczywiście, wielbiciele Extended Events mogą użyć także tego silnika do monitorowania operacji na modelu Power BI. Ba, po podłączeniu modelu w SSMS 2017 okazuje się, że jedna sesja XE już działa na modelu (PBIDesktopTrace).

Podsumowanie

Wygląda na to, że pracując z modelem Power BI pracujemy tak naprawdę z uruchamianym lokalnie silnikiem SSAS. To, co cieszy mnie bardziej, to fakt, że wszystko wskazuje na dążenie firmy Microsoft do ścisłej integracji Power BI i SQL Server. Przedstawione powyżej chwyty są tego kolejnym dowodem. Myślę, że wkrótce doczekamy się naprawdę ciekawych czasów dla użytkowników platformy danych Microsoft. Właściwie już są ciekawe :-)

Leave a Reply