Tableau im Einzelhandel, wirklich?

Die Zeit fĂŒr die Berichterstattung in Excel geht schnell zu Ende – der Trend zu benutzerfreundlichen Tools zur PrĂ€sentation und Analyse von Informationen ist in allen Bereichen sichtbar. Wir haben bereits intern ĂŒber die Digitalisierung der Berichterstellung diskutiert und uns fĂŒr das Visualisierungs- und Self-Service-Analyse-System Tableau entschieden. Alexander Bezugly, Leiter der Abteilung fĂŒr analytische Lösungen und Berichterstattung der Gruppe „M.Video-Eldorado“, sprach ĂŒber die Erfahrungen und Ergebnisse beim Aufbau eines operativen Dashboards.

Ich sage gleich, nicht alles, was geplant war, konnte umgesetzt werden, aber die Erfahrung war interessant, ich hoffe, sie wird auch fĂŒr Sie nĂŒtzlich sein. Und wenn jemand Ideen hat, wie man es besser machen könnte – wĂ€re ich sehr dankbar fĂŒr RatschlĂ€ge und Ideen.

Tableau im Einzelhandel, wirklich?

Im Folgenden erfahren Sie, mit welchen Herausforderungen wir konfrontiert waren und was wir gelernt haben.

Wie wir angefangen haben

In der Gruppe „M.Video-Eldorado“ gibt es ein gut ausgearbeitetes Datenmodell: strukturierte Informationen mit der erforderlichen Speichertiefe und eine große Anzahl von festen Berichtsvorlagen (siehe Details diesen Artikel geschrieben). Daraus erstellen Analysten entweder Pivot-Tabellen oder formatierte Mailings in Excel, oder ansprechende PrĂ€sentationen in PowerPoint fĂŒr die Endbenutzer.

Vor etwa zwei Jahren begannen wir, anstelle von festen Berichten analytische Reports in SAP Analysis zu erstellen (ein Add-In fĂŒr Excel, im Wesentlichen eine Pivot-Tabelle ĂŒber eine OLAP-Engine). Aber dieses Tool konnte die BedĂŒrfnisse aller Benutzer nicht abdecken, die meisten nutzten weiterhin die Informationen, die von den Analysten zusĂ€tzlich verarbeitet wurden.

Unsere Endbenutzer lassen sich in drei Kategorien einteilen:

Top-Management. Fordert Informationen in gut prÀsentierter und anschaulich verstÀndlicher Form an.

Middle-Management, fortgeschrittene Benutzer. Interessiert an der Datenforschung und in der Lage, selbststÀndig Berichte zu erstellen, wenn die entsprechenden Tools vorhanden sind. Genau sie wurden zu den Hauptbenutzern der analytischen Berichte in SAP Analysis.

Massenbenutzer. Nicht interessiert an selbststÀndiger Datenanalyse, nutzen Berichte mit begrenztem Freiraum, in Form von Mailings und Pivot-Tabellen in Excel.

Unsere Idee war es, die BedĂŒrfnisse aller Nutzer abzudecken und ihnen ein einheitliches, benutzerfreundliches Werkzeug zu bieten. Wir haben mit dem Top-Management begonnen. Sie benötigten benutzerfreundliche Dashboards zur Analyse der wichtigsten GeschĂ€ftsergebnisse. So starteten wir mit Tableau und wĂ€hlten zunĂ€chst zwei Bereiche aus: Verkaufszahlen im Einzelhandel und online, mit eingeschrĂ€nkter Tiefe und Breite der Analyse, die etwa 80 % der vom Top-Management angeforderten Daten abdecken sollten.

Da die Benutzer der Dashboards das Top-Management waren, kam ein weiterer zusĂ€tzlicher KPI des Produkts hinzu – die Reaktionsgeschwindigkeit. Niemand wird 20-30 Sekunden warten, bis die Daten aktualisiert sind. Die Navigation sollte in 4-5 Sekunden erfolgen, am besten sofort. Leider haben wir das nicht erreicht.

So sah das Layout unseres Hauptdashboards aus:

Tableau im Einzelhandel, wirklich?

Die zentrale Idee war es, die wichtigsten KPI-Treiber, von denen sich letztendlich 19 angesammelt haben, links zu bĂŒndeln und deren Dynamik sowie die AufschlĂŒsselung nach den wichtigsten Attributen rechts darzustellen. Die Aufgabe scheint nicht kompliziert, die Visualisierung logisch und verstĂ€ndlich, bis man in die Details eintaucht.

Detail 1. Datenvolumen

Die Hauptverkaufstabelle fĂŒr das Jahr umfasst bei uns etwa 300 Millionen Zeilen. Da sowohl die Dynamik des aktuellen Jahres als auch die des Vorjahres abgebildet werden mĂŒssen, betrĂ€gt das Datenvolumen nur fĂŒr die tatsĂ€chlichen Verkaufszahlen etwa 1 Milliarde Zeilen. Zudem werden die Informationen zu den Plan-Daten und dem Bereich Internet-VerkĂ€ufe separat gespeichert. Daher, selbst wenn wir die spaltenbasierte In-Memory-Datenbank SAP HANA verwendet haben, betrug die Abfragegeschwindigkeit fĂŒr die Auswahl aller Kennzahlen fĂŒr eine Woche aus den aktuellen Speichern zur Laufzeit etwa 15-20 Sekunden. Die Lösung dieses Problems drĂ€ngt sich geradezu auf – zusĂ€tzliche Materialisierung der Daten. Aber auch dabei gibt es Fallstricke, die ich im Folgenden erlĂ€utere.

Detail 2. Nicht-additive Kennzahlen

Viele unserer KPIs sind an die Anzahl der Belege gebunden. Dieser Wert stellt sich als COUNT DISTINCT der Anzahl der Zeilen (BelegĂŒberschriften) dar und zeigt unterschiedliche Summen je nach gewĂ€hlten Attributen. Zum Beispiel, wie dieser Wert und davon abgeleitete Werte berechnet werden sollten:

Tableau im Einzelhandel, wirklich?

FĂŒr die Korrektheit der Berechnungen kann man:

  • Solche Kennzahlen zur Laufzeit im Speicher berechnen;
  • Die Berechnung ĂŒber das gesamte Datenvolumen in Tableau durchfĂŒhren, d.h. auf Anfrage in Tableau alle Daten zu den gewĂ€hlten Filtern mit der GranularitĂ€t der Belegpositionen bereitstellen;
  • Eine materialisierte Sicht erstellen, in der alle Kennzahlen fĂŒr alle Auswahlvarianten berechnet werden, die unterschiedliche nicht-additive Ergebnisse liefern.

Es ist klar, dass in den Beispielen UTE1 und UTE2 die Attribute des Materials darstellen, die die Warenhierarchie reprĂ€sentieren. Dies ist keine statische Angelegenheit; darĂŒber erfolgt das Management innerhalb des Unternehmens, da verschiedene Produktgruppen von unterschiedlichen Managern betreut werden. Wir hatten viele globale Überarbeitungen dieser Hierarchie, bei denen alle Ebenen verĂ€ndert wurden, wo die Beziehungen neu bewertet wurden, sowie stĂ€ndige punktuelle Änderungen, bei denen eine Gruppe von einem Knoten zu einem anderen wechselt. In der ĂŒblichen Berichterstattung wird all dies dynamisch aus den Materialattributen berechnet. Im Falle der Materialisierung dieser Daten ist es notwendig, einen Mechanismus zur Verfolgung solcher Änderungen und zur automatischen Übertragung historischer Daten zu entwickeln. Eine durchaus komplexe Aufgabe.

Detail 3. Datenvergleich

Dieser Punkt Àhnelt dem vorherigen. Der Kernpunkt ist, dass in der Firma bei der Analyse mehrere Vergleichsebenen mit dem vorherigen Zeitraum gebildet werden:

Vergleich mit dem vorherigen Zeitraum (Tag zu Tag, Woche zu Woche, Monat zu Monat)

In diesem Vergleich wird davon ausgegangen, dass wir je nach dem vom Benutzer gewĂ€hlten Zeitraum (zum Beispiel die 33. Woche des Jahres) die Dynamik zur 32. Woche anzeigen mĂŒssen. Wenn wir Daten fĂŒr den Monat auswĂ€hlen wĂŒrden, zum Beispiel Mai, wĂŒrde dieser Vergleich die Dynamik zum April zeigen.

Vergleich mit dem Vorjahr

Der Hauptpunkt besteht darin, dass man beim Vergleich von Tagen und Wochen nicht einfach denselben Tag des Vorjahres nimmt, also nicht nur das aktuelle Jahr minus eins setzen kann. Man muss den taggleichen Wochentag betrachten. Im Gegenteil, beim Vergleichen von Monaten muss man genau denselben Kalendertag des Vorjahres heranziehen. Es gibt auch Besonderheiten bei Schaltjahren. In den ursprĂŒnglichen Datenspeichern sind alle Informationen nach Tagen aufgeteilt, es gibt keine separaten Felder fĂŒr Wochen, Monate oder Jahre. Daher muss man, um einen vollstĂ€ndigen analytischen Überblick im Dashboard zu erhalten, nicht nur einen Zeitraum, zum Beispiel eine Woche, betrachten, sondern vier Wochen berechnen und dann diese Daten vergleichen, um die Dynamik und Abweichungen abzubilden. Diese Logik zur Bildung des Vergleichs in der Dynamik kann entweder in Tableau oder auf der Seite des Dashboards implementiert werden. Ja, und wir waren uns dieser Details natĂŒrlich bewusst und dachten bereits in der Entwurfsphase darĂŒber nach, aber deren Einfluss auf die Leistung des endgĂŒltigen Dashboards war schwer vorherzusagen.

Bei der EinfĂŒhrung des Dashboards folgten wir einem langen Agile-Weg. Unser Ziel war es, so schnell wie möglich ein funktionierendes Werkzeug mit den erforderlichen Daten zur Testung bereitzustellen. Daher arbeiteten wir in Sprints und konzentrierten uns darauf, die Arbeiten im aktuellen Datenspeicher zu minimieren.

Teil 1. Vertrauen in Tableau

Um die IT-UnterstĂŒtzung zu vereinfachen und Änderungen schnell umzusetzen, haben wir beschlossen, die Logik zur Berechnung nicht-additiver Kennzahlen und den Vergleich vergangener ZeitrĂ€ume in Tableau zu realisieren.

Schritt 1. Alles live, keine Nachbearbeitung der Dashboards.

In diesem Schritt haben wir Tableau an die aktuellen Dashboards angeschlossen und uns angesehen, wie die Anzahl der Belege fĂŒr ein Jahr berechnet wird.

Ergebnis:

Die Antwort war ernĂŒchternd – 20 Minuten. DatenĂŒbertragung ĂŒber das Netzwerk, hohe Belastung fĂŒr Tableau. Wir haben verstanden, dass die Logik fĂŒr nicht-additive Kennzahlen in HANA realisiert werden muss. Das hat uns nicht wirklich erschreckt, wir hatten bereits Ă€hnliche Erfahrungen mit BO und Analysis gemacht und konnten schnelle Dashboards in HANA erstellen, die korrekt berechnete nicht-additive Kennzahlen liefern. Jetzt blieb nur noch, sie an Tableau anzupassen.

Schritt 2. Wir optimieren die Dashboards, keine Materialisierung, alles in Echtzeit.

Wir haben eine separate neue PrĂ€sentation erstellt, die die erforderlichen Daten fĂŒr TABLEAU dynamisch bereitstellte. Insgesamt haben wir ein gutes Ergebnis erzielt, indem wir die Zeit zur Erstellung aller Kennzahlen innerhalb einer Woche auf 9-10 Sekunden verkĂŒrzt haben. Wir hatten ehrlich erwartet, dass die Reaktionszeit des Dashboards in Tableau beim ersten Öffnen 20-30 Sekunden betragen wĂŒrde und danach aufgrund des Caches zwischen 10 und 12 Sekunden, was uns insgesamt zufrieden gestellt hĂ€tte.

Ergebnis:

Erstes Öffnen der Dashboards: 4-5 Minuten
Jeder Klick: 3-4 Minuten
Eine solche zusÀtzliche Verbesserung der PrÀsentation hatte niemand erwartet.

Teil 2. Eintauchen in Tableau

Schritt 1. Analyse der Tableau-Leistung und schnelles Tuning

Wir begannen, zu analysieren, wofĂŒr Tableau die meiste Zeit benötigt. DafĂŒr gibt es durchaus gute Tools, was natĂŒrlich ein Pluspunkt fĂŒr Tableau ist. Das Hauptproblem, das wir festgestellt haben, waren sehr komplexe SQL-Abfragen, die Tableau erstellte. Diese hingen vor allem mit Folgendem zusammen:

— der Transponierung von Daten. Da Tableau keine Werkzeuge zur Transponierung von DatensĂ€tzen hat, mussten wir fĂŒr die Erstellung des linken Teils des Dashboards mit der detaillierten Darstellung aller KPIs eine Tabelle mithilfe von CASE erstellen. Die GrĂ¶ĂŸe der SQL-Abfragen in der Datenbank erreichte 120.000 Zeichen.

Tableau im Einzelhandel, wirklich?

— der Auswahl des Zeitraums. Eine solche Abfrage auf Datenbankebene benötigte mehr Zeit zur Kompilierung als zur AusfĂŒhrung:

Tableau im Einzelhandel, wirklich?

D.h. die Bearbeitung der Abfrage dauerte 12 Sekunden + 5 Sekunden zur AusfĂŒhrung.

Wir beschlossen, die Logik der Berechnungen auf der Tableau-Seite zu vereinfachen und einen weiteren Teil der Berechnungen auf die PrÀsentation und die Datenbankebene zu verlagern. Das brachte gute Ergebnisse.

Zuerst haben wir die Transponierung dynamisch durchgefĂŒhrt, und zwar durch einen Full Outer Join in der finalen Berechnungsphase der VIEW, gemĂ€ĂŸ dem Ansatz, der hier beschrieben ist: Transpose – Wikipedia, die freie EnzyklopĂ€die und Elementarmatrix – Wikipedia, die freie EnzyklopĂ€die.

Tableau im Einzelhandel, wirklich?

Das heißt, wir haben eine Konfigurationstabelle erstellt – eine Transpositionsmatrix (21x21) und alle Kennzahlen in zeilenweiser AufschlĂŒsselung erhalten.

FrĂŒher:
Tableau im Einzelhandel, wirklich?

Ist geworden:
Tableau im Einzelhandel, wirklich?

Das Transponieren der Datenbank benötigt nahezu keine Zeit. Die Anfrage zu allen Metriken fĂŒr die Woche wurde weiterhin in etwa 10 Sekunden bearbeitet. Allerdings ging die FlexibilitĂ€t beim Erstellen des Dashboards fĂŒr eine bestimmte Kennzahl verloren, d.h. fĂŒr den rechten Teil des Dashboards, wo die Dynamik und die detaillierte AufschlĂŒsselung einer bestimmten Kennzahl dargestellt sind, wurde der Report frĂŒher in 1-3 Sekunden bearbeitet, da die Anfrage nur fĂŒr eine Kennzahl lief. Jetzt wĂ€hlt die Datenbank jedoch immer alle Kennzahlen aus und filtert das Ergebnis, bevor es an Tableau zurĂŒckgegeben wird.

Infolgedessen hat sich die Geschwindigkeit der Dashboard-Nutzung fast um das Dreifache verringert.

Ergebnis:

  1. 5 Sekunden – Parsen des Dashboards, Visualisierungen
  2. 15-20 Sekunden – Vorbereitung der Kompilierung von Anfragen mit Vorausberechnungen in Tableau
  3. 35-45 Sekunden – Kompilierung der SQL-Anfragen und deren parallele/sequenzielle AusfĂŒhrung in Hana
  4. 5 Sekunden – Verarbeitung der Ergebnisse, Sortierung, Neuberechnung der Visualisierungen in Tableau
  5. NatĂŒrlich waren solche Ergebnisse fĂŒr das GeschĂ€ft unbefriedigend, und wir setzten die Optimierung fort.

Phase 2. Minimale Logik in Tableau, vollstÀndige Materialisierung

Wir waren uns bewusst, dass es unmöglich ist, ein Dashboard mit einer Reaktionszeit von wenigen Sekunden auf einem Report zu erstellen, der 10 Sekunden benötigt, und betrachteten die Möglichkeit der Materialisierung der Daten auf der Datenbankseite speziell fĂŒr das benötigte Dashboard. Doch wir stießen auf ein globales Problem, das oben beschrieben wurde – nicht additive Kennzahlen. Wir konnten es nicht umsetzen, dass Tableau beim Ändern von Filtern oder Rollouts flexibel zwischen verschiedenen Reports und Ebenen, die fĂŒr verschiedene Produkt Hierarchien vorab berechnet wurden, umschaltet (im Beispiel generieren drei Anfragen ohne UTE, mit UTE1 und UTE2 unterschiedliche Ergebnisse). Daher entschieden wir uns, das Dashboard zu vereinfachen, auf die Produkthierarchie im Dashboard zu verzichten und zu beobachten, wie schnell es in der vereinfachten Version sein kann.

So sammelten wir in diesem letzten Schritt ein separates Speicher, in dem wir alle KPIs in transponierter Form ablegten. Auf der Datenbankseite wird jede Anfrage an dieses Speicher in 0,1 – 0,3 Sekunden bearbeitet. Im Dashboard erhielten wir folgende Ergebnisse:

Erstes Öffnen: 8-10 Sekunden
Jeder Klick: 6-7 Sekunden

Die Zeit, die Tableau benötigt, besteht aus:

  1. 0,3 Sekunden – Parsen des Dashboards und Kompilierung der SQL-Anfragen
  2. 1,5-3 Sekunden – AusfĂŒhrung der SQL-Anfragen in Hana fĂŒr die Hauptvisualisierungen (wird parallel zu Punkt 1 gestartet)
  3. 1,5-2 Sekunden — Rendering, Neuberechnung von Visualisierungen
  4. 1,3 Sekunden — AusfĂŒhrung zusĂ€tzlicher SQL-Abfragen zur Ermittlung relevanter Filterwerte (Marke, Division, Stadt, GeschĂ€ft), Parsing der Ergebnisse

Wenn wir eine kurze Zusammenfassung ziehen wĂŒrden

Uns hat das Tool Tableau aus Sicht der Visualisierung gefallen. In der Entwurfsphase haben wir verschiedene Visualisierungselemente betrachtet und alle in den Bibliotheken gefunden, einschließlich komplexer mehrstufiger Segmentierungen und Multidriver-Waterfall.

Bei der EinfĂŒhrung von Dashboards mit den wichtigsten Verkaufskennzahlen sind wir auf Leistungsprobleme gestoßen, die wir bisher nicht lösen konnten. Wir haben ĂŒber zwei Monate investiert und ein funktional unvollstĂ€ndiges Dashboard erhalten, dessen Reaktionsgeschwindigkeit am Rande des ErtrĂ€glichen lag. Daraus haben wir folgende Erkenntnisse gewonnen:

  1. Tableau kann nicht mit großen Datenmengen umgehen. Wenn Sie in Ihrem Ausgangsdatensatz mehr als 10 GB Daten haben (ungefĂ€hr 200 Millionen × 50 Zeilen), verlangsamt sich das Dashboard erheblich — von 10 Sekunden bis mehrere Minuten pro Klick. Wir haben sowohl bei Live-Verbindungen als auch bei Extrakten experimentiert. Die Arbeitsgeschwindigkeit ist vergleichbar.
  2. EinschrĂ€nkungen bei der Verwendung mehrerer Speicherorte (Datasets). Es gibt keine Möglichkeit, die Beziehung der Datasets mit Standardmitteln anzugeben. Wenn Umgehungslösungen zur Verbindung von Datasets verwendet werden, hat das erhebliche Auswirkungen auf die Leistung. In unserem Fall haben wir in Betracht gezogen, Daten in jedem benötigten Dimensionalen Material zu machen und auf diesen materialisierten Datasets Umschaltungen vorzunehmen, wĂ€hrend die zuvor ausgewĂ€hlten Filter beibehalten wurden — das stellte sich in Tableau als unmöglich heraus.
  3. In Tableau können keine dynamischen Parameter erstellt werden. Sie können einen Parameter, der zur Filterung des Datasets im Extrakt oder bei einer Live-Verbindung verwendet wird, nicht mit dem Ergebnis einer anderen Auswahl aus dem Dataset oder einem Ergebnis einer anderen SQL-Abfrage fĂŒllen, sondern nur mit der nativen Benutzereingabe oder einer Konstante.
  4. EinschrÀnkungen im Zusammenhang mit dem Erstellen von Dashboards mit OLAP-Elementen | Pivot-Tabellen.
    In MSTR, SAP SAC, SAP Analysis, when you add a dataset to a report, all objects on it are linked to each other by default. In Tableau, this is not the case; connections need to be set up manually. This is likely more flexible, but for all our dashboards, it’s a mandatory requirement for the elements – hence this results in extra labor costs. Moreover, if you create linked filters so that, for instance, when filtering by region, the list of cities is limited to only those cities in that region, you immediately encounter sequential queries to the database or extract, which noticeably slows down the dashboard.
  5. Limitations in functions. Both with the extract and especially with the dataset from Live-connect, bulk transformations cannot be performed. This can be done through Tableau Prep, but that entails additional labor costs and another tool that needs to be learned and maintained. For example, you cannot transpose data, or join it with itself. This is limited by transformations on individual columns or fields that need to be selected through case or if, leading to very complex SQL queries, where the database spends most of its time compiling the query text. These inflexibilities of the tool had to be addressed at the level of the display, leading to a more complicated storage solution and additional loads and transformations.

We haven't given up on Tableau. However, as a tool capable of building industrial dashboards and a means to replace and digitize the entire corporate reporting system of the company, we are not considering Tableau.

We are currently actively developing a similar dashboard on another tool and simultaneously trying to rethink the dashboard architecture in Tableau to simplify it even further. If the community is interested, we will share the results.

We also welcome your ideas or advice on how to build fast dashboards in Tableau over such large volumes of data, as we have a website where the data far exceeds that in retail.

Quelle: habr.com

60GB SSD 8Gb DDR4