Tableau udostępnia moduł Performance Recording, który pozwala na analizę poszczególnych zapytań i zidentyfikowanie potencjalnych źródeł problemów z wydajności. O tym narzędziu pisaliśmy już w jednym z poprzednich artykułów. Porównywaliśmy również wszystkie zalety i wady używania ekstraktów i źródeł danych typu "live". To dobre wprowadzenie do Performance Tuningu w Tableau, jednak aby lepiej zrozumieć istotę tego zagadnienia musimy przyjrzeć się kilku podstawowym zasadom, które pozwolą nam wycisnąć z naszych workbooków jak najwięcej w jak najkrótszym czasie. W pierwszej części tego artykułu przyjrzmy się temu, co można w tej kwestii zrobić na poziomie samego środowiska i źródła danych (bazy).
Środowisko
Tableau Desktop działa zdecydowanie lepiej na maszynach z 64-bitowym systemem operacyjnym, co nie powinno nikogo dziwić. Kluczowym aspektem jest tutaj ograniczenie w pamięci operacyjnej dla systemów 32-bitowych (efektywnie jest to około 3-3,5 GB RAM), które nie pozwala Tableau rozwinąć skrzydeł, a w przypadku pracy z większymi źródłami danych kończy się znienawidzonym błędem "out of memory". Generalnie im więcej pamięci RAM, tym lepiej. Maszyna deweloperską powinna mieć przynajmniej 8GB (zaleca się 16 GB). Liczy się również szybkość taktowania pamięci i dysków twardych. Niezłym pomysłem jest wykorzystanie ciągle taniejących dysków SSD.
Te same zasady dotyczą serwera - przy instalacji nowej instacji tableau server na pewno warto zainwestować w mocny sprzęt z dużo ilością ramu i szybkim, wielordzeniowym CPU. Wiele testów pokazuję, że rówież przeglądarka ma duże znaczenie. Generalnie Chrome i Firefox wypadają lepiej niż IE. Warto oczywiście zadbać o ich najnowsze wersję biorąc pod uwagę jak szybko wypuszczane są aktualizacje do Tableau Desktop/Server.
Baza danych
W większości środowisk korporacyjnych relacyjne bazy danych stanowią główne źródło danych. Mając doświadczenia z wieloma setupami mogę stwierdzić, że najlepszą wydajność w Tableau odnotowałem pracując z bazami Teradata i Oracle. Trochę gorzej wspominam pracę z MS SQL Server i IBM DB2, ale często jest to kwestia tuningu samej bazy, która jest naszym wąskim gardłem jeśli chodzi o wydajność raportów - szczególnie warto zwrócić na to uwagę używając połączeń typu "live data connection". Oto kilka rad odnośnie tego, co warto zoptymalizować na poziomie bazy:
- Indeksy to podstawa. Na pewno warto indeksować wszystkie kolumny wykorzystywane w operacjach join i filtrach/ dashboard actions
- Obecność kluczy głównych i obcych we wszystkich tabelach pozwala Tableau na zignorowanie wielu "integrity checks", co znacznie przyśpiesza zadanie (weryfikacja powinna być po stronie bazy)
- Przy dużych ilościach danych istotne jest partycjowanie danych np na poziomie daty
- Tableau nie lubi wartości typu NULL - unikaj ich jeśli tylko masz taką możliwość!
- jeśli potrzebujesz skomplikowanych kalkulacji, pomyśl o stowrzeniu dedykowanego widoku na poziomie bazy danych który wykona czarną robotę za Tableau - w większości przypadków system bazodanowy wykona to zadanie zdecydowanie szybciej niż Tableau!
- Korzystaj z tabeli zagregowanych jeśli masz do czynienia wielkimi źródłami danych (o ile nie musisz prezentować danych transakcyjnych i wystarczą Ci podsumowania). Pamiętaj, że możesz również wykorzystać opcję agregacji na danym poziomie przy tworzeniu ekstraktu w Tableau!
Więcej informacji znajdziecie w kolejnej części artykułu poświęconej optymalizacji wydajności w samym Tableau!