Dynamische Kundenklassifizierung mit QlikView

Es gibt viele graphische Hilfsmitteln in QlikView um seine Kunden zu klassifizieren. Sei es die Anzeige einer fix gerechneten Klassifizierung aus dem Quellsystem, ein Balkendiagramm in dem man mit der Maus die relevanten Kunden selektiert, oder eine ABC-Analyse. Manchmal möchte der Anwender die Kunden aber erst an der Oberfläche anhand von dynamischen Grenzen auswählen können.

Das Schöne an QlikView ist, dass es die Detaildatensätze im Arbeitsspeicher hält. Anstatt also nur eine vorberechnete Klassifizierung aus dem Quellsystem anzeigen zu können, kann man anhand der aktuellen Selektion dynamisch Kunden wählen. Unterhalb zwei Beispiele wie man solche Anforderungen in QlikView userfreundliche lösen kann.

1. Selektiere Kunden anhand eines Umsatzbereiches

Will der Anwender also alle Kunden filtern, die im August 2015 zwischen 1.500 und 5.000€ Umsatz gemacht haben, kann er das prinzipiell mit dem Feature "Erweiterte Suche" tun. Jedoch ist einiges an Tipparbeit nötig und auch die Formel-Syntax ist oft nicht ganz einfach. Deswegen stellen wir unseren Anwendern hierfür zwei Inpuvariablen (für die Umsatzgrenzen) und eine Schaltfläche bereit, welche die Drecksarbeit übernehmen:

Ein Klick auf den Button selektiert Kunden mit Umsatz im Aug 2015 zwischen 1,500 und 5,000€
Nach dem Klick sieht man die Syntax der Erweiterten Suche in der Auswahlstatus-Box. Es wurden acht Kunden selektiert.


Mit dieser Auswahl an Kunden kann der Anwender nun weiter analysieren: Wählt er zum Beispiel den September, sieht er, dass erst zwei der acht Kunden im aktuellen Monat Umsatz generiert haben.


Die Syntax der dynamischen Suche auf das Feld "Firma" wird in der "Auswahl in Feld"-Aktion der Schaltfläche weggekapselt:

='=sum(Umsatz) >= $(vSuchwertMin) and sum(Umsatz) <= $(vSuchwert)'

2. Klassifiziere Kunden anhand eines durchschnittlichen Bestellwertes

Abhängig von z.B. der Produktkategorie kann der durchschnittliche Bestellwert eines Kundens stark variieren: der Bestellwert bei Ersatzteilen ist niedriger, als wenn man eine ganze Maschine kauft. Insofern ist eine vorberechnete Klassifizierung im Vorsystem oft nicht ausreichend, da dort die Klassifizierung zumeist über alle Bestellungen des Kunden vorgenommen wird.

In unserem Beispiel sehe wir, dass im Jahr 2015 in der Kategorie "Milchprodukte" neun Kunden existieren, die einen durchschnittlichen Bestellwert größer 700€ haben. Das sind für den Anwender die "A Kunden" in dieser Kategorie. Die Grenzen für die ABC-Kunden kann über die Inputbox frei definiert werden.

9 Kunden haben einen durchschnittlichen Bestellwert von mehr als 700€ im Jahr 2015 für Milchprodukte

Eine Auswahl in der Listbox liefert uns die "A Kunden". Man sieht auch, dass nach Klassifizierung des Vorsystems zwei dieser Kunden eigentlich als "B Kunden" firmieren. Klar, denn diese Klassifizierung ist nicht dynamisch anhand der aktuellen Userselektion und Umsatzgrenzen.
 

Ändert man die Produktkategorie nun auf "Getränke", sieht man, dass hier die Klassifizierung anders aussieht: wir hätten bei gleicher 700€-Grenze mit "QUICK-Stop" nur einen der neun Kunden als "A Kunden"! Vier der anderen Kunden sind in dieser Kategorie überhaupt nur C-Kunden.



Die Implementierung der Selektion ist mit einer dynamische Listbox gelöst. Die AGGR-Funktion berechnet dynamisch anhand des Feld Firma und der Bestell-Nrs die ABC-Klassifizierung.

=aggr(
 if(
  avg(
   aggr(
    sum(Umsatz),Firma,[Bestell-Nr]
   )
  ) < $(vSmall), dual('C Kunde: Umsatz <$(vSmall)',1),
  if(
   avg(
    aggr(
     sum(Umsatz),Firma,[Bestell-Nr]
    )
   )< $(vMedium), dual('B Kunde: $(vSmall) < Umsatz < $(vMedium)',2), 
   
   dual('A Kunde: Umsatz >= $(vMedium)',3))
  ) 
  
  
,Firma)

Das gesamte Beispiel finden Sie hier.

PS: die AGGR in AGGR wäre hier nicht unbedingt notwendig. sum(Umsatz)/count(Distinct Bestell-Nr) ginge auc; aber schön das zu zeigen :-)
heldendaten GmbH,2017