W trakcie prowadzenia szkoleń/warsztatów dla klientów Tableau często spotykam sie z problemem sortowania w wizualizacjach posiadających wiele kategorii. W przykładzie skorzystałem z demonstracyjnych danych SuperstoreSales dostępnych w Tableau Desktop po zainstalowaniu. Na poniższym wykresie słupkowym analizujemy sprzedaż, według regionów, następnie kategorii produktów i prioryteru zamówienia.
Próba posortowania wartości sprzedaży np. w poszczególnych kategoriach daje wynik niezgodny z intuicyjnym oczekiwaniem użytkownika.
W opcjach sortowania mamy do wyboru sortowanie alfabetyczne lub według pola, np. zagregowanej wartości sprzedaży. Po wyborze tej opcji Tableau dokonuje sortowania według ustalonego porządku (rosnąco/malejąco) dla sumy sprzedaży dla poszczególnych kategorii. Pomija podział na priorytet (i ew. dalsze wymiary), widać to bardzo dobrze w momencie gdy na chwilę usuniemy miarę priorytet z wizualizacji.
Dodatkowo użycie standardowej funkcji sortowania ustawia jednakową kolejność wymiaru kategoria w każdym regionie, nawet jeśli wielkości sprzedaży/kategoria w innych regionach różnią się.
Uzyskanie sortowania zgodnego z oczekiwaniami, wymaga wprowadzenia dodatkowych pól, po których będziemy mogli posortować słupki.
Zdefiniujmy dodatkowe pole kalkulowane: Priority sort, definicja pola opiera się na funkcji index(), która pokazuje numer elementu w oknie tabeli, według określonych parametrów.
Po wstawieniu miary do wizualizacji należy pamiętać o skonwertowaniu jej do wartości dyskretnych (prawy przycisk na miarze, opcja discrete).
Do sortowania kluczowe jest określenie parametrów kalkulacji tabelarycznej index() tak aby pokazywała prawidłowe wartości, po których będzie można posortować wykres. W opcjach miary wybieramy Edit Table Calculation, następnie okreslamy w jaki sposób ma być liczona kalkulacja (partycjonowanie tabeli). W opcjach advanced wybieramy wszystkie pola widoczne na wykresie (region, kategoria, priorytet), oraz dodatkowo ustawiamy sortowanie według sumy sprzedaży.
Parametry te pozwalają ustawienie sposobu liczenia kalkulacji dla wybranych pól, co ustawiamy w opcji level. Interesuje nas sortowanie po priorytecie zamówienia, więc wybieramy Order Priority. Dodatkowo kalkulacja powinna być restartowana (Restarting every) dla każdej kategorii (chcemy mieć sortowanie po priorytecie w kategoriach)
Efekt powinien wyglądać następująco.
Ponieważ kolumna Priority sort, niekoniecznie musi być widoczna, możemy ją ukryć (show header).

Do analizy możemy dodawać kolejne pola zawierające kalkulacje tabelaryczne index(), w załączonym przykładzie dodałem jeszcze pole Category sort, które po odpowiedniej konfiguracji daje w wyniku analizę posortowaną w każdym regionie po kategoriach (malejąco według sprzedaży), w każdej kategorii po priorytecie (malejąco według sprzdaży).
Tutaj można znaleźć plik z całym ćwiczeniem.
Uzyskanie sortowania zgodnego z oczekiwaniami, wymaga wprowadzenia dodatkowych pól, po których będziemy mogli posortować słupki.
Zdefiniujmy dodatkowe pole kalkulowane: Priority sort, definicja pola opiera się na funkcji index(), która pokazuje numer elementu w oknie tabeli, według określonych parametrów.
Po wstawieniu miary do wizualizacji należy pamiętać o skonwertowaniu jej do wartości dyskretnych (prawy przycisk na miarze, opcja discrete).
Do sortowania kluczowe jest określenie parametrów kalkulacji tabelarycznej index() tak aby pokazywała prawidłowe wartości, po których będzie można posortować wykres. W opcjach miary wybieramy Edit Table Calculation, następnie okreslamy w jaki sposób ma być liczona kalkulacja (partycjonowanie tabeli). W opcjach advanced wybieramy wszystkie pola widoczne na wykresie (region, kategoria, priorytet), oraz dodatkowo ustawiamy sortowanie według sumy sprzedaży.
Parametry te pozwalają ustawienie sposobu liczenia kalkulacji dla wybranych pól, co ustawiamy w opcji level. Interesuje nas sortowanie po priorytecie zamówienia, więc wybieramy Order Priority. Dodatkowo kalkulacja powinna być restartowana (Restarting every) dla każdej kategorii (chcemy mieć sortowanie po priorytecie w kategoriach)
Efekt powinien wyglądać następująco.
Ponieważ kolumna Priority sort, niekoniecznie musi być widoczna, możemy ją ukryć (show header).

Do analizy możemy dodawać kolejne pola zawierające kalkulacje tabelaryczne index(), w załączonym przykładzie dodałem jeszcze pole Category sort, które po odpowiedniej konfiguracji daje w wyniku analizę posortowaną w każdym regionie po kategoriach (malejąco według sprzedaży), w każdej kategorii po priorytecie (malejąco według sprzdaży).
Tutaj można znaleźć plik z całym ćwiczeniem.
KOMENTARZE