Automatyczne odświeżanie danych – dla kogo ten artykuł?
Data Refresh to na tyle obszerny temat, że zdecydowałem się podzielić materiał o nim na dwie części. Niniejszy artykuł dotyczy Automatic Page Refresh. Jest to funkcjonalność dostępna głównie dla raportów posiadających datasets pracujące w trybie DirectQuery. Ten typ odświeżania powinien być również interesujący dla tych, którzy po przeczytaniu artykułu na temat Data Stream, ze względu na ograniczenia technologiczne, nie znaleźli w nim satysfakcjonującego rozwiązania.
Uwaga – ze względu na dużą liczbę pojęć technicznych takich jak: dataset, data source, data refresh, dataset refresh, Automatic Page Refresh, query oraz aby ułatwić odniesienie treści niniejszego artykułu i kolejnych do dokumentacji Microsoft Power BI, wszystkie pojęcia pozostały w pisowni oryginalnej.
Przeczytaj także: Organizacja data-driven
Dlaczego istnieją ograniczenia wynikające z licencji?
We wstępie wspomniałem, że dla data refresh nie bez znaczenia jest typ licencji. W Power BI spotkamy się z pojęciem Capacities, co możemy określić jako przydzielone zasoby dostępnej pamięci, mocy obliczeniowej procesora i pojemności dysków.
Capacities dzielą się na współdzielone (shared) oraz zarezerwowane (reserved). Zasoby współdzielone są dostępne dla wielu klientów firmy Microsoft, a zarezerwowane – dla pojedynczego klienta. Workspaces, na które są wysyłane raporty, są tworzone w obrębie Capacities. Domyślnie workspace utworzony przy pomocy licencji darmowej lub Pro znajduje się w shared Capacity, to samo tyczy się tworzonego automatycznie My Workspace. Ponieważ Power BI musi zapewnić dostęp dla wielu użytkowników przy ograniczonych zasobach, istnieje szereg ograniczeń, takich jak np. wielkość modelu ograniczona do 1 GB lub limit 8 aktualizacji dataset dziennie. Licencja typu Premium umożliwia dostęp do reserved Capacity i dlatego daje większe możliwości. Poza tym oferuje również dostęp do panelu administratora, gdzie w zależności od potrzeb może on określić ramy, w obrębie których developer będzie się poruszać.
Wykupując licencję Premium, należy określić, jaką ilość zasobów (rdzeni wirtualnych, pamięci) chcemy nabyć. Microsoft stworzył jednostkę SKU, która określa grupy zasobów – dokładną tabelę opisującą dostępne ilości zasobów można znaleźć w dokumentacji [5]. Przykładowo, wykupując licencję Premium i grupę zasobów SKU P3, otrzymujemy dostęp do 32 rdzeni wirtualnych (v-cores). Z tej puli zasobów tworzy się reserved Capacity. W zależności od potrzeb można utworzyć jedno Capacity z wszystkich dostępnych zasobów lub kilka z mniejszą ilością v-cores. Niestety nie można rozdzielić v-cores na Capacities wedle własnego uznania, trzeba trzymać się grup SKU opisanych w dokumentacji. Ostatni element to przydzielenie workspace do Capacities. Posiadając licencję Premium, za każdym razem, gdy jest tworzony nowy workspace, należy przypisać go do shared Capacity lub reserved Capacity.
Automatic Page Refresh – gdzie znajdzie zastosowanie?
W wielu organizacjach bywają sytuacje, gdy niezbędny jest raport, który pokaże najbardziej aktualne dane. Może to być stan techniczny urządzeń na linii produkcyjnej, aktualne trendy jakiegoś zagadnienia w social media lub inne wymagające natychmiastowej reakcji. Jedną z prób sprostania tego typu wymaganiom jest data streaming. Technologia ta posiada jednak pewne ograniczenia, związane głównie z możliwością automatycznej publikacji raportu, a Automatic Page Refresh może okazać się skuteczną alternatywą.
Dodatkową zaletą jest to, że Automatic Page Refresh jest wspierane przez Power BI Embedded, co oznacza, że do raportów z automatycznym odświeżaniem stron mogą mieć dostęp użytkownicy systemu nieposiadający licencji Power BI.
Dwa sposoby pozyskiwania danych w Power BI
Możemy wyróżnić dwie główne koncepcje pozyskiwania danych przez raport.
Pierwsza polega na tym, że to raport oczekuje, aż dane same do niego dotrą. Ta koncepcja jest wykorzystana w raportach pracujących na streaming datasetach.
Druga koncepcja działa wprost odwrotnie i polega na tym, że to raport pobiera z data source nowe dane. W oparciu o tę koncepcję działają typowe raporty Power BI oraz opcja Automatic Page Refresh. „Efektem ubocznym” jest to, że musimy pamiętać, aby nie doprowadzić do nadmiernego obciążenia data source zapytaniami wysyłanymi przez raport.
Załóżmy, że na stronie raportu znajdują się 3 wykresy, 2 tabele i 5 filtrów (slicer). Wszystkie te elementy to wizualizacje i każda z nich wysyła jedno zapytanie do źródła danych, łącznie 10 zapytań. Załóżmy, że odświeżanie jest wykonywane co 30 sekund. Oznacza to, że co 30 sekund jest wysyłanych do źródła 10 zapytań. Automatic Page Refresh nie używa cache, a to oznacza, że dla każdego użytkownika te 10 zapytań będzie wysyłane osobno.
Microsoft wprowadził szereg funkcjonalności, aby pomóc developerom w utrzymaniu kontroli nad obciążeniem źródła danych. Przykładowo, jeżeli raport składa się z kilku stron i dla każdej jest uruchomiona opcja Automatic Page Refresh, to odświeżaniu podlegają tylko te wizualizacje, które aktualnie są wyświetlane na ekranie. O pozostałych zabezpieczeniach piszę w dalszej części artykułu.
Fixed interval vs change detection
Automatic Page Refresh można podzielić na dwa rodzaje odświeżania strony raportu:
- Fixed interval
- Change detection
Fixed interval polega na odświeżeniu wszystkich wizualizacji widocznych na ekranie w określonych przedziałach czasowych. Change detection działa trochę inaczej – w tej metodzie należy określić miarę, która będzie sprawdzana, również w określonym interwale. W momencie wykrycia zmiany miary odświeżone zostaną wszystkie wizualizacje. W zamyśle to rozwiązanie ma zmniejszyć obciążenie źródła danych.
Konfiguracja Automatic Page Refresh – fixed interval
Konfigurowanie Automatic Page Refresh odbywa się częściowo w Power BI Desktop, a częściowo w Power BI Server. Podczas tworzenia raportu w Power BI Desktop w zakładce Visualizations (Rys. 1) należy kliknąć na ikonę wałka malarskiego i na dole strony znajdzie się ustawienie Page Refresh.
- Zmiana z Off na On spowoduje uruchomienie odświeżania już w Power BI Desktop, co pozwala obserwować efekty jeszcze przed wysłaniem raportu na Power BI Server. Odświeżanie stron jest uruchamiane dla każdej strony osobno, dzięki temu możemy stworzyć wielostronicowy raport, w którym tylko wybrane strony podlegają odświeżaniu.
- Refresh type to przełącznik pomiędzy fixed interval i change detection. Opcja Auto Page Refresh jest tożsama z nazwą fixed interval – w dokumentacji Microsoft te nazwy są używane zamiennie. Poniżej tego przełącznika na grafice widać ustawienie interwału odświeżania (Refresh this page every…). Domyślne ustawienie to 30 minut. Dostępny zakres zaczyna się od 1 sekundy, a kończy na 24 dniach. Pełen zakres jest dostępny na Power BI Desktop. Ograniczenia zaczynają się w momencie wysyłki raportu na Power BI Service. Darmowa licencja oraz licencja Pro umożliwiają odświeżanie stron minimum co 30 minut. Licencja Premium daje dostęp do pełnego zakresu interwałów.
- Show details zawiera kilka bardzo istotnych i przydatnych informacji.
- Pierwsza mówi nam, czy funkcjonalność jest udostępniona przez administratora. O możliwościach administratora piszę w akapicie „Licencja Premium i ustawienia administratora”
- Admin interval to informacja, jaki interwał odświeżania dopuszcza administrator. Jeżeli ustawione zostanie odświeżanie częstsze, niż dopuszcza administrator, wtedy raport i tak przyjmie wartość ustawioną przez niego. Jest to zabezpieczenie przed nadmiernym obciążeniem zapytaniami źródeł danych.
- Actual rate pokazuje rzeczywisty czas kolejnych aktualizacji strony. Pozwala określić, czy np. nie zostało ustawione odświeżanie, które przekracza możliwości źródła danych. Zabezpieczenia Automatic Page Refresh nie pozwolą na rozpoczęcie kolejnej aktualizacji strony raportu, zanim nie zakończy się poprzednia. Załóżmy, że odświeżanie strony jest ustawione co 5 sekund. Raport wysyła 3 zapytania do źródła danych. Na pierwsze dwa odpowiedź przychodzi w ciągu 3 sekund, a ostatnie zapytanie wykonuje się dłużej i odpowiedź dociera po 10 sekundach. Dopiero po tych 10 sekundach Power BI rozpocznie kolejny cykl odświeżania strony.
- Last refresh to godzina ostatniej aktualizacji raportu.
Konfiguracja Automatic Page Refresh – change detection
Czas omówić nieco bliżej change detection. Na początek przykra informacja: ta opcja jest dostępna tylko dla licencji Premium. Po wybraniu opcji change detection pojawi się link Add change detection, który otworzy okno ustawień (Rys. 3).
Należy ustawić miarę, której wartość będzie śledzona i w momencie wykrycia zmiany zostanie odświeżona cała strona raportu. Można wybrać istniejącą miarę lub utworzyć nową. Tutaj również ustawia się interwał sprawdzeń wybranej miary. Należy pamiętać, że dla pojedynczego modelu można wybrać tylko jedną miarę. Niestety, change detection nie dostarcza szczegółowych informacji np. o tym, czy udaje się utrzymać ustawiony interwał sprawdzania zmian.
Po wysłaniu raportu na Power BI Service w dalszym ciągu możliwy jest dostęp do panelu ustawień i monitorowania Automatic Page Refresh. Aby to zrobić, należy otworzyć wybrany raport i wybrać opcję Edit. Ustawienia Page Refresh są w tym samym miejscu co na rysunkach 1 i 3.
Licencja Premium i ustawienia administratora
Licencja Premium oferuje większe możliwości ustawiania interwałów czasowych oraz udostępnia panel administratora, w którym można zarządzać ustawieniami Automatic Page Refresh po stronie Power BI Server. Istnieją pewne różnice w automatic page refresh pomiędzy licencją Pro i Premium. Licencja Pro umożliwia odświeżanie stron nie częściej niż co 30 minut, natomiast opcja change detection nie jest w ogóle dostępna.
Licencja Premium oferuje większe możliwości ustawiania interwałów czasowych oraz udostępnia panel administratora, w którym można zarządzać ustawieniami Automatic Page Refresh po stronie Power BI Server. Administrator dokonuje ustawień w obrębie reserved Capacities, które z kolei obejmują swoim działaniem podłączone do niego workspace.
- Włączenie funkcji odświeżania – oba typy odświeżania, czyli fixed interval (Automatic Page Refresh) lub change detection, mogą być niezależnie od siebie wyłączone lub włączone. Warto rozważyć utworzenie kilku Capacities, jeden z włączoną funkcją automatic page refresh a pozostałe z wyłączoną.
- Minimalny interwał czasowy dla fixed interval – domyślne ustawienie przy licencji Premium to 5 minut. Administrator może dopuścić automatyczne odświeżanie nawet co 1 sekundę. Jeżeli w raporcie odświeżanie będzie ustawione częściej, niż przewidział to administrator, wtedy raport będzie odświeżany z częstotliwością dopuszczoną przed administratora.
- Minimalny interwał czasowy dla change detection – administrator musi ustawić minimalny interwał uruchamiania miary, której zadaniem jest wykrywanie zmian w dataset. Domyślne ustawienie to 5 sekund, minimalne to 1 sekunda. Podobnie jak poprzednio – ustawienie administratora jest nadrzędne w stosunku do tego, co ustawi developer w raporcie.
Kolejnym zabezpieczeniem przed nadmiernym obciążeniem źródła danych jest nadawanie priorytetów dla przesyłanych zapytań. Zapytania przesyłane w opcji fixed interval mają niski priorytet, wyjątkiem od tej reguły są zapytania wysyłane przez opcję change detection do wykrycia zmian w data source. Jeżeli change detection wykryje zmianę, to wszystkie zapytania służące do zaktualizowania strony raportu również otrzymają niski priorytet. Administrator workspace z licencją Premium ma dostęp do metryki, która jest w stanie pokazać, w jakim stopniu zasoby są zajęte przez zapytania o niskim priorytecie. Niestety odświeżanie datasource wykonywane przez harmonogram (schedule refresh) również wysyła zapytania o niskim priorytecie, co może być utrudnieniem dla administratora w poszukiwaniu przyczyn powolnego działania systemu raportowego.
Czy tylko Direct Query?
Generalnie Automatic Page Refresh jest przeznaczone dla raportów korzystających z Direct Query, ale istnieją pewne wyjątki. W dokumentacji Microsoftu znajduje się tabela, która zestawia możliwości użycia Automatic Page Refresh w zależności od posiadanej licencji oraz wybranego storage mode.
Automatyczne odświeżanie danych w usłudze Power BI – podsumowanie
Automatic Page Refresh jest znakomitym narzędziem, ponieważ nie wymaga stosowania dashboardów. Po wysłaniu na serwer odświeżanie działa na tej stronie raportu, na której zostało ustawione. Dzięki temu nie jesteśmy w żaden sposób ograniczeni co do zastosowanych wizualizacji i ich formatowania.
Do minusów możemy zaliczyć brak obsługi Automatic Page Refresh przez REST API. Na szczęście Power BI jest narzędziem, które wciąż jest rozwijane, dlatego pozostaje nadzieja, że obsługa REST API pojawi się w przyszłości.
Pracując z Automatic Page Refresh, należy mieć na uwadze, że jest to rozwiązanie, które może spowodować pochłonięcie wszystkich dostępnych zasobów, przez co ograniczony zostanie dostęp do źródła danych dla innych raportów. Na szczęście Microsoft wprowadził szereg pomocnych rozwiązań pozwalających ograniczyć obciążenie źródła danych, takich jak: change detection, wysyłanie nowych zapytań dopiero, gdy poprzednie zwróciły wartości, czy chociażby nadawanie zapytaniom priorytetów. Nie należy też zapominać o roli administratora, który posiada narzędzia służące ochronie źródła danych przed nadmiernym obciążeniem.
Przeczytaj także: NoSQL vs SQL, czyli kiedy i jaki typ bazy danych wybrać