czwartek, 8 czerwca 2017

Tableau Performance Tuning - część II

W ostatnim artykule poświęconym Performance Tuningowi dashboardów prayglądaliśmy się wszystkim czynnikom na poziomie środowiska oraz źródła danych, które mogą poważnie wpłynać na wydajność naszych raportów. Tym razem pora zastanowić się nad konkretnymi działaniami oraz tzw. dobrymi praktykami, które możemy zastosować w trakcie tworzenia dashboardów aby przyśpieszyć ich działanie.

Wyłącz automatyczną aktualizację danych


Jeśli pracujemy z wyjątkowo dużym zbiorem danych w trybie live, warto rozważyć tymczasowe zablokowanie automatycznych update'ów (pause auto updates) do czasu dodania wszystkich dodatkowych miar i wymiarów - dzięki temu unikniemy niezwykle irytującego oczekiwania na wyrenderowanie się widoku przy każdej modyfikacji. Po zakończeniu całej operacji wystarczy ponownie włączyć opcję "resume auto updates" lub wymusić ręczny update poprzez użycie kolejnego buttona "Run Update" (również dostępny po wciśnięciu F9).

Opcje Pause Auto Updates i Run Update


Połączenie ze źródłem danych


Staraj się nie korzystać z Custom SQL, jeśli nie jest to absolutnie konieczne. Pozwoli to uniknąć kosztownych podzapytań generowanych przez Tableau. Generalnie dobrą praktyką jest używanie jak najmnijeszej liczby źródeł danych (jakkolwiek trywialnie by to nie zabrzmiało) i usuwanie na bieżąco niepotrzebnych połączeń, które mogą się stać dodatkowym obcążeniem.


Filtry kontekstowe


Nie wahaj się korzystać z filtrów kontekstowych (context filters) jeśli wiesz, że dany worksheet potrzebuje jedynie małego fragmentu całego zbioru danych np. ściśle sprecyzowanego okresu czasu, produktu czy klienta. Złota reguła mówi, że jeśli na dzień dobry musimy odfiltrować 90% naszych danych, to użycie filtra kontekstowego powinno znacznie przyśpieszyć całą operację (szczególnie, jeśli mamy do czynienia z tzw. "slow changing dimensions").

Opcja użycia filtra kontekstowego

Kolejny sposób na wykorzystanie filtrów kontekstowych w celu poprawy wydajności to zastosowanie pozornie bezsensownego filtra typu "include all" w celu zmateralizowania joinów wykonywanych przez Tableau. Dzięki takiemu prostemu zabiegowi zostanie stworzona tableau tymczasowa, która powinna kilkukrotnie przyśpieszyć dostęp do danych (pod warunkiem, że korzystamy z joinów w tableau). Jak stworzyć taki filtr? Najprościej wykorzystać Exclude none :)

teoretycznie nieistniejący filtr, czyli "exclude none"


Ekstrakty


O ekstraktach i wszystkich pozytywnych aspektach ich wykorzystywania pisaliśmy w jednym z poprzednich artykułów. Warto pamiętać o tym, że ekstrakty w Tableau są niezwykle wydajne i pozwalają w znaczny sposób przyśpieszyć dostęp do największych źródeł danych. Wyjątkowo przydatne opcję, które możemy wykorzystać przy tworzeniu ekstraktu to:

  • Hide All Unused Fields - pozwala wykluczyć wszystkie nieużywane pola w celu "odchudzenia" ekstraktu i znacznego wzrostu wydajności
  • Aggregate data for visible dimensions - czyli agregacja danych na poziomie wykorzystywanym przez wizualizację (szczególnie przydatne przy pracy z danymi transakcyjnymi )


Filtry


Istnieją pewne sytuacje, w których zwykłe filtry potrafią w znacząc sposób wpłynąc na wydajność naszego workbooka.

Staraj się unikać opcji Exclude - w przypadku zastosowania tej opcji Tableau musi każdorazowo przeskanować wszystkie dane. Dodatkowo można wtedy zapomnieć o wszystkich korzyściach związanych z wykorzystaniem indeksów na poziomie bazy danych!

Fltrowanie wymiaru czasu po indywidualnych datach (Individual dates and times) również nie jest najlepszym pomysłem w przypadku pracy z wielomilionową tabelą - zdecydowanie lepiej zastosować filtrowanie kaskadowe (np. rok, miesiąc, dzień) i wyświetlić tylko cześć danych, która nas interesuję. W celu ograniczenia dużych zbiorów danych można też wykorzystać tzw. relative date filters (np ostatni dzień, miesiąc, rok).

Opcja Only Relevant Values dostępna w przypadku quick filters powinna być wykorzystywana z rozwagą i jedynie wtedy, gdy jest naprawdę wymagana. Jej wykorzystanie może drastycznie wpłynąć na szybkość działania dashboardu!

W większości przypadków filtering dashboard actions są szybsze, niż quick filters. Wynika to z tego, że w przypadku tych drugich tableau jest zmuszone do każdorazowego skanowania całego wymaru przed wyśwetleniem listy dostępnych wartości. W przypadku dashboard actions nie jest to wymagane, ponieważ filtry te wykorzystują wyrenderowane wizualizację, które posiadają już taką informację. Warto również zwrócić uwagę na to, co ma się dziać z widokiem bo resecie selekcji (opcja "clearing the selection will" w menu Dashboard->Actions). Jeśli pracujemy z wyjątkowo dużym zbiorem danych, zaleca się wykorzystanie opcji "Exclude all values" w celu uniknięcia wyświetlania dużych ilość danych w trybie "defaultowym".

Edytowanie dashboard action


W kolejnym artykule z tej serii postramy się przyjrzeć dobrym praktykom związanym z tworzeniem kalkulacji w Tableau, dzięki którym możemy bezpośrednio wpłynąć na wzrost wydajności całego dashboardu. Do zobaczenia następnym razem!

1 komentarz:

  1. Dziękuje za zebranie tylu cennych informacji w jednym miejscu, mam pytanie czy w przypadku extractu, bardziej wydajne będzie zrobienie extractu i opublikowanie go na serwerze, następnie podłączenie się pod niego raportem twbx? czy może lepiej (pod względem wydajności) będzie pozostawienie extractu w pliku i opublikowanie raportu wraz z extractem na serwerze? Zawsze myślałem że ta druga opcja jest gorsza, gdyż plik jest dużo większy, ale w praktyce okazuje się czasem że takie raporty na serwerze otwierają się szybciej?

    OdpowiedzUsuń