Free Trial

Blog - Deutsch

Erkenntnisse und Ideen von den besten Analytics-Experten.
RolandSchubert
16 - Nebula
16 - Nebula

Eine große Preiskampagne ist geplant und das Motto lautet: "20 Prozent auf alles - außer Tiernahrung". Wir haben die Aufgabe, die neuen Preise - zum Teil reduziert, zum Teil aber auch nicht - zu ermitteln und nutzen dazu (was auch sonst?) Alteryx.

 

Natürlich ist das schnell erledigt. Wir holen uns die derzeitigen Preise aus der aktuellen Liste, berechnen den neuen Preis über ein Formula Tool und schreiben die Aktionspreise dann wieder weg. Die Berechnung würde dann möglicherweise so aussehen:

 

P00.jpg

 

Alternativ geht es natürlich auch so:

 

P01.jpg

 

Oder auch so:

 

P02.jpg

 

Welche dieser Varianten man nutzt, ist eine Frage des persönlichen Geschmacks - die zweite und die dritte Schreibweise haben leichte Vorteile, wenn es um Performance geht, dafür finde ich die erste etwas übersichtlicher.

 

 

Die Aufgabe ist also schnell erledigt - oder vielleicht doch nicht? Irgendjemandem ist dann doch noch eingefallen, dass eine undifferenzierte Preissenkung über fast alle Warengruppen doch keine so gute Idee ist ... und als Ergebnis dieser Überlegung bekommen wir jetzt eine Liste ausgewählter Warengruppen, für die eine Anpassung der Preise erfolgen soll.

 

Die Aufgabe lautet nun, passend zur Saison die Preise für die folgenden Warengruppen um 20% zu reduzieren:

 

Gartenhartware
Gartenmöbel-/dekoration
Holz
Lebendes Grün/Saatzucht
Wasserbehandlung
Schwimmbadanlagen, Saunen

 

Alle anderen Preise bleiben unverändert. 

 

 

Möglichkeit 1: IF/ELSEIF

 

Nun lässt sich unsere oben verwendete Berechnung ja leicht erweitern, indem einfach mit IF/ELSEIF geprüft wird, ob der jeweilige Artikel zu einer der angegebenen Warengruppen gehört und dann entsprechend den Preis zu reduzieren, falls keine der Bedingungen erfüllt ist, wird wieder der Originalpreis übernommen. Das sieht dann so aus:

 

P03.jpg 

Klar ist das mit COPY/PASTE und etwas Anpassung schnell erledigt. Aber nun stellen wir uns mal vor, der kreative Kollege, der die Aktion plant, kommt auf die Idee, den Prozentsatz zu ändern. Das muss dann in jeder Zeile einzeln gemacht werden.

 

Möglicherweise werden ja auch noch weitere Warengruppen aufgenommen - die Formel wird dann sehr lang und unübersichtlich. Besonders übersichtlich ist es ja jetzt schon nicht ...

 

 

Möglichkeit 2: IN-Liste

 

Aber es gibt ja noch andere Möglichkeiten. Wir müssen nicht für jede Auswahlmöglichkeit eine eigene Bedingung verwenden, sondern wir können prüfen, ob in einer Liste von Bezeichnungen ein Treffer dabei ist. Dazu gibt es den Operator IN.

 

Das sieht dann so aus:

 

P04.jpg

 

Insgesamt ist das in jedem Fall deutlich übersichtlicher. Positiver Nebeneffekt ist- es ist auch schneller, sogar deutlich schneller. Im Beispiel gewinnen wir rund 40 Prozent! Die Umstellung hat sich also gelohnt.

 

 

Möglichkeit 3: REGEX

 

Wenn es darum geht festzustellen, ob ein Text in einer Liste auftaucht, könnte uns natürlich auch RegEx als Option einfallen. Und tatsächlich ist das auch hier eine Möglichkeit. Die Funktion REGEX_Match kann benutzt werden, um die Übereinstimmung zu prüfen:

 

P05.jpg

 

Wird in der Spalte [Bezeichnung] einer der Einträge aus der Liste gefunden, ist die Bedingung erfüllt. Wichtig: Die einzelnen Listeneinträge müssen hier mit "|" getrennt werden! Das geht also auch so, dauert aber wieder länger - die Zeit liegt etwa auf dem Niveau der IF/ELSEIF-Lösung. "IN" ist hier also die bessere Lösung.

 

Ein Nachteil bleibt aber, dass die Liste mehr oder weniger "fest definiert" ist - bei jeder Änderung müssen wir die Formel anpassen, also die in der IN-Liste genannten Warengruppen ergänzen. Wenn wir das vermeiden wollen, können wir die "Identifikation der betroffenen Warengruppen" und die "Berechnung des neuen Preises" auch in zwei Schritte aufteilen.

 

 

Möglichkeit 4: Bedingung und Berechnung trennen

 

In diesem Ansatz verwenden wir ein Text Input Tool, um unsere Liste von Warengruppen zu pflegen (das könnte auch eine Datei oder Tabelle in Verbindung mit einem Input Data Tool sein). Über ein Find Replace Tool hängen wir dann ein Kennzeichen an die gefundenen Warengruppen an und steuern die Berechnung über dieses Kennzeichen. Wenn also die Warengruppe in der "Preisliste" in der Warengruppen-Liste auftaucht, hängt das Find Replace Tool den Namen einfach noch einmal an, das zusätzliche Feld ist dann (aber auch nur dann) nicht NULL und der Rabatt wird berechnet. Sonst wird wieder der Normalpreis behalten. 

 

P06.jpg  

 

Die Performance ist zwar etwas schlechter als bei der IN-Lösung, aber immer noch deutlich besser die anderen Ansätze! Zudem gewinnen wir so an Flexibilität.

 

 

Möglichkeit 5: Berechnung flexibilisieren

 

Aber es geht sogar noch flexibler. Wir können nämlich auch noch den Rabatt in das Text Input Tool (oder die entsprechende Input-Datei) packen - dann können wir hierüber nicht nur steuern, welche Warengruppen im Preis reduziert werden, sondern auch noch, wie hoch der Rabatt sein soll.

 

Über das Find Replace Tool hängen wir jetzt nicht mehr den Warengruppen-Namen als Kennzeichen an, sondern den Rabatt. Und der wird (sofern vorhanden) dann gleich verwendet, um den neuen Preis auszurechnen, der sich Ergebnis, wenn wir den alten Preis mit "1 - Rabatt" multiplizieren.

 

P07.jpg

 

 

Vielleicht wundert sich ja jemand, warum denn in der Formel noch ein ToNumber verwendet wird - das Feld [Rabatt] ist doch bereits numerisch. Nun - für alle Warengruppen, die in der Liste nicht gefunden werden, wird nichts angehangen, das ist dann der Wert NULL. Das Ergebnis von 1 - NULL ist "NULL".

 

P08.jpg

 

Damit würde unsere Logik nicht mehr funktionieren.  ToNumber sorgt dafür, dass aus "NULL" eine "0" wird - bei Werten wie 0.1 oder 0.2, die schon numerisch sind, passiert einfach nichts.

 

Bleibt die spannende Frage, wie es denn mit der Performance aussieht. Und da erleben wir im Beispiel eine Überraschung - die gerade gezeigte Lösung ist nicht nur die flexibelste, sondern auch die schnellste!  

 

 

Fazit

 

Wie wir sehen, gibt es (wie so oft) eine ganze Reihe von Lösungswegen - und neben den hier vorgestellten Varianten gibt es natürlich auch noch andere Wege. Abhängig von der konkreten Aufgabenstellung hat man dann die Wahl - und die muss keineswegs immer auf Möglichkeit 5 fallen, auch wenn sie in unserem Beispiel der flexibelste und schnellste Ansatz war. Wenn wir etwa davon ausgehen können, dass die Auswahlliste stabil sein wird, hat die Lösung mit einer IN-Liste sicherlich den Vorteil, dass sie einfach zu verstehen und nachzuvollziehen ist und könnte dann die "richtige" Entscheidung sein.

 

 

Weitere Tipps Tuesday Beiträge

Dieser Eintrag ist Teil der Tipps Tuesday-Serie, alle Einträge dieser Serie findest du in unserem Index aufgelistet.

Beschriftungen