Beschreibung
Schon ein paar mal ist mir aufgefallen das eine Pivot-Tabelle (Pivottable) nicht korrekt sortiert wenn es mehr als eine Dimension gibt. Die erste Dimension wird korrekt sorrtiert, aber ab der zweiten muss es nicht mehr so sein.
Da kann man auch mit den Sortier-Funktionen nichts ausrichten. Selbst wenn man die Sortierung nach Formel macht.
Wieso ist das so?
Qlik Sortiert die Pivottabelle nicht falsch, das sieht nur so aus. Qlik nimmt die Summen der Dimensionen und sortiert nach den Summen (Totals). Deshalb sieht es falsch aus.
Beispiel
Falsch sortiert
Richtig sortiert
Wie kann das nun Implementiert werden?
Ziel muss es sein dass die Felder eindeutig werden pro Dimension und dass die Dimensionen in Zusammenhang gebracht werden. Das heisst, nicht nur das Country wird betrachtet, sonder Country und Year sind ein Feld bei der Sortierung.
Damit das etwas generischer gehalten werden kann, hat Christoph Schwarz die Formeln aufgestellt (Youtube Video https://www.youtube.com/watch?v=PfPz_JOH1XE)
Qlik Code
SET fxSort2 = Dual($1, Num#(Left(KeepChar(Hash256($1,$2),'0123456789ABCDEF'),18),'(hex)'));
SET fxSort3 = Dual($1, Num#(Left(KeepChar(Hash256($1,$2,$3),'0123456789ABCDEF'),18),'(hex)'));
SET fxSort4 = Dual($1, Num#(Left(KeepChar(Hash256($1,$2,$3,$4),'0123456789ABCDEF'),18),'(hex)'));
SET fxSort5 = Dual($1, Num#(Left(KeepChar(Hash256($1,$2,$3,$4,$5),'0123456789ABCDEF'),18),'(hex)'));
Wenn diese Formeln eingefügt werden im Script, kann nach einem neu laden der Daten diese Formeln bei den Dimensionen verwendet werden.
Die erste Dimension (Bsp. Year) wird korrekt sortiert, ab der zweiten Dimension kann folgendes Beispiel verwendet werden.
Für die 3. oder 4. Dimension kann gleich verfahren werden wie bei der 2., nur die Anzahl der Parameter wird erweitert.
$(fxSort2(Country, Year)
Mein Tipp, die Parameter sollten in umgekehrter Reihenfolge der Dimensionen der Formel übergeben werden.
Das führt zum besten Ergebnis (z.B. Spalte 1, Spalte 2 => fxSort2(Spalte 2, Spalte 1).
Beschränkungen der Lösung
- Das Umstellen der Dimensionen ist so nicht mehr möglich.
- Es kann bei grossen Datenmengen zu Performance Problemen führen (nicht getestet!).