Jak przyspieszyć odświeżanie raportu Power BI?

  • Home
  • /
  • Jak przyspieszyć odświeżanie raportu Power BI?
gallery1

Mateusz Baczewski / 14 maja 2024

Jak przyspieszyć odświeżanie raportu Power BI?

Raporty BI stają się nieodłącznym elementem funkcjonowania każdej świadomej firmy. Power BI jest najpopularniejszym narzędziem pozwalającym na analizę danych oraz generowanie raportów, dających managerom całkowity ogląd na aspekty działalności, którą zarządzają. Jednym z kluczowych czynników wpływających na użyteczność raportów jest szybkość ich odświeżania, zwłaszcza w środowiskach biznesowych, gdzie aktualność danych jest kluczowa dla podejmowania trafnych decyzji. Ze względu na coraz większe zbiory danych oraz zaawansowane analizy rośnie zainteresowanie możliwościami optymalizacji wydajności Power BI. Zbyt długo odświeżające się zbiory danych Power BI potrafią być bardzo uciążliwe i nieefektywne. W tym artykule przedstawiamy przydatne strategie i techniki, które pomogą Wam przyspieszyć proces odświeżania raportów w Power BI, w przypadku gdy źródłem danych do raportu jest baza danych SQL.

Przemyśl zawartość SELECT

Wydaje się to oczywiste, ale warto to podkreślić. Pisanie zapytań pobierających komplet danych z tabeli źródłowej (np. z użyciem SELECT *) nigdy nie jest dobrym pomysłem. Wybierz tylko te kolumny, które rzeczywiście będą wykorzystane w tworzeniu miar czy będą stanowiły jeden z wymiarów w analizie. Przy odświeżaniu, Power BI wykona każde z zapytań i zapisze do datasetu wszystkie dane, które zostaną przez te zapytania zwrócone. Wybieranie wszystkich kolumn z tabeli źródłowej oznacza, wczytywanie niepotrzebnych wartości, które zwiększą czas potrzebny do odświeżenia danych.

Nie jesteś pewny, które z nich będą potrzebne? Nie ma problemu - pobierz wszystkie, a gdy skończysz wykonaj krok w tył i dostosuj zapytanie.

Filtruj

Nie wahaj się filtrować danych już na etapie zapytania. Na przykład, jeśli raport ma dotyczyć nowej akcji promocyjnej, która ruszyła od marca, to nie wczytuj danych sprzedażowych za poprzednie 3 lata. Jeśli akcja dotyczy tylko kilku wybranych SKU to wczytaj tylko je! W ten prosty sposób ograniczysz drugi z wymiarów tabeli i pozwolisz uniknąć zbędnych obliczeń i operacji na danych, które nie są istotne z punktu widzenia danego raportu. Owszem te same ograniczenia można zastosować na poziomie Power BI, ale nie jest to podejście optymalne, gdyż oznacza odfiltrowanie zbędnych danych na jednym z ostatnich etapów. To tak jakbyś załadował kosz pełen zakupów i dopiero przy kasie stwierdzał co finalnie kupisz, a czego nie. Nie łatwiej od samego początku wsadzać do koszyka tylko to czego potrzebujemy?

Grupuj

Aby grupować dane przed wczytaniem ich do Power BI, musisz być świadomym wymiarów analizy, do której będą one wykorzystane. Wczytywanie danych na zbyt dużym poziomie szczegółowości nie ma sensu i znowu - będzie prowadziło do obciążenia procesu odświeżania raportu Power BI.

gallery1

Najłatwiej będzie zrozumieć to na przykładzie:

Dane sprzedażowe w tabelach SQLowych najczęściej zapisywanie są w formie zawierającej pojedyncze transakcje. Jeśli zależy nam na obserwowaniu wielkości sprzedaży z podziałem na klienta oraz miesiąc, wczytywanie do Power BI każdej pojedynczej transakcji nie ma sensu.

Zamiast:
                                SELECT t_date, t_client, t_value
                                FROM transactions
                            

Lepszym wyborem jest:
                                SELECT YEAR(t_date), MONTH(t_date), t_client, SUM(t_value)
                                FROM transactions
                                GROUP BY YEAR(t_date), MONTH(t_date), t_client
                            

Dzięki temu:

  • Power BI będzie musiał wczytać zdecydowanie mniejszą ilość danych.
  • Power BI będzie miał do wykonania mniej obliczeń, ze względu na to, że już na wstępie otrzymał dane w formie zagregowanej.

Kluczowe jest wyznaczenie najbardziej szczegółowego wymiaru analizy. Na przykład:
                                SELECT t_date, t_client, SUM(t_value)
                                FROM transactions
                                GROUP BY t_date, t_client
                            

Będzie pozwalało zejść najniżej do poziomu pojedynczego dnia. Wgląd w poszczególne transakcje nie będzie możliwy. Wejście na poziomy wyższej agregacji będzie natomiast bezproblemowe. Z tak przedstawionych danych bez problemu można policzyć sprzedaż tygodniową, miesięczną czy roczną.


Uwzględniaj transformacje danych w zapytaniu

Wszelkiego rodzaju kolumny kalkulowane, zmiany typów danych, scalania i tym podobne operacje implementuj już na etapie tworzenia zapytania. Unikaj wprowadzania ich w PowerQuery, które jest mniej wydajne. Dodatkowo, umieszczenie transformacji w zapytaniu zwiększa czytelność. Wszystkie operacje są skoncentrowane w jednym miejscu, co ułatwia zrozumienie logiki przetwarzania danych.


Unikaj tabel kalkulowanych

Tabele kalkulowane są odświeżane dopiero w momencie, gdy podstawowe źródła danych zostaną odświeżone. Przekłada się to na wydłużony czas oczekiwania na odświeżenie całego raportu, nawet w przypadku, gdy jej zawartość wydaje się być ograniczona.