Lange Wartezeiten beim Umgang mit Tableau sind nervig und sorgen fürmehr Frust als Lust. Wie man trotz Live-Connection oder einem komplexen Datenmodell die Performance der Tableau-Datenquelle wieder in den Griff bekommt, beleuchten wir in dieser Case-Study.
Table of Contents
Ein paar Eckdaten zur Vergleichbarkeit
Wer nach Vorschlägen zur Performance-Verbesserung von Tableau-Datenquellen recherchiert, wird im Internet schnell fündig. Oft sind die dargestellten Lösungen aber sehr vage und es mangelt an Informationen zum Anwendungsfall. Daher stellen wir zur besseren Vergleichbarkeit ein paar Eckdaten aus einem beispielhaften Referenzprojekt dar:
In der Ausgangslage wurde die oben dargestellte Tableau-Datenquelle mit Tableau Desktop 2019.1.2 erstellt und dann auf Tableau Server einem breiteren Anwenderkreis zur Verfügung gestellt. Viele Operationen, z. B. Filter zu setzen oder Attribute in den Bericht zu ziehen, liefen häufig mehr als 60 Sekunden, in Extremfällen sogar bis zu 10 Minuten. Eine Umsetzung als Extrakt kam aufgrund einer beschränkten Speicherkapazität des Servers nicht in Frage.
Vorgehen und konkrete Maßnahmen gegen Performance-Engpässe
Um eine Idee davon zu bekommen, an welcher Stelle genau es zu Performance-Engpässen kommt, bietet es sich an, mit der Tableau-Performance-Aufzeichnung in der Arbeitsmappe zu arbeiten. Diese ist allerdings nur in Tableau Desktop verfügbar.
Folgende Maßnahmen führten bei uns zu Performance-Verbesserungen
Umstellung auf "logische Datenquelle" ab Tableau Version 2020.2
Die von Tableau generierten SQL-Abfragen können von Entwickler:innen der Quelle nur bedingt beeinflusst werden – sie hängen vor allem von den Operationen in der Arbeitsmappe ab und werden dynamisch von der Tableau Engine generiert. Vor der Version 2020.2 hat die Tableau Engine stets alle in der Datenquelle verbundenen Tabellen gemeinsam abgefragt, auch wenn nur ein Bruchteil der Tabellen tatsächlich in der Arbeitsmappe benötigt wurde. Durch die in Tableau 2020.2 eingeführte logische Ebene werden jetzt nur noch diejenigen Objekte abgefragt, die tatsächlich auch benötigt werden. Die generierten SQL-Abfragen werden dadurch deutlich schlanker.
Performance Option einsetzen
Ein weiteres Feature aus Tableau 2020.2: In den sogenannten Beziehungen zwischen Tabellen können jetzt Performance-Optionen gesetzt werden, die es Entwickler:innen ermöglichen, die generierten SQL-Abfragen zu optimieren.
Hier gilt grundsätzlich: Je genauer, desto besser: „Many-to-One“ ist besser als „Many-to-Many“, „All records match“ ist besser als „Some records match“. Die Angaben ersparen der Tableau Engine unnötiges Gruppieren und Aggregieren und bewirken dadurch performantere Abfragen.
Noch ein kleiner Tipp zum Schluss
Verwendet man dieselbe Abfrage mehrmals in einer Quelle (z. B., um in allen Objekten in die Historie zu stechen), lohnt es sich, sie als benutzerdefinierte Abfrage zu schreiben und am Ende mit einem „order by false“ zu bestücken. In zahlreichen Datenbanken wie z. B. Exasol wird so eine Materialisierung des Ergebnisses erzwungen, was sich bei wiederholenden Abfragen positiv auf die Performance auswirkt.
Ergebnisse
Anhand einer Referenz-Arbeitsmappe konnten wir an vielen Stellen Performanceverbesserungen feststellen. Beispielsweise hatte die Berechnung einer summierten Kennzahl vorher noch durchschnittlich 40 Sekunden gebraucht, danach lediglich rund 3 Sekunden. Auch nach der Umsetzung der neuen Datenquelle konnten wir beobachten, dass die Performance mit Zunahme der aktivierten Filter im Workbook abnimmt. Das erscheint auf den ersten Blick kontrovers, ist aber durch die Art und Weise, wie Filter in Tableau funktionieren, erklärbar. Abhilfe schaffen Kontextfilter:
Hierdurch werden Filter nicht mehr unabhängig voneinander berechnet, sondern nur noch auf die restliche Datenmenge nach Verwendung des Kontextfilters angewendet.
Wer ist b.telligent?
Du willst den IoT Core durch eine Multi-Cloud-Lösung ersetzen und die Vorteile weiterer IoT-Services von Azure oder Amazon Web Services nutzen? Dann melde Dich bei uns und wir unterstützen Dich bei der Umsetzung mit unserer Expertise und dem b.telligent Partnernetzwerk.
Mit der neuen Funktion AUSDRUCKERSETZEN bietet arcplan 7 die Möglichkeit, Einfluss auf das automatisch generierte SQL und MDX Statement zu nehmen. Dies hat den Vorteil, dass weiterhin ein Design mittels „Pfeilen“ erfolgen kann und man nicht auf Formeln beschränkt ist. Mit diesem Mittel sind aktuell nur einfache Anpassungen an der Abfrage möglich, jedoch mit einem großen Impact auf die daraus entstehenden Möglichkeiten.
Mit dem Q2 2023 Update „New Optimized Story Experience – Unified Stories and Applications“ bietet die SAP Analytics Cloud Nutzer:innen neue Wege, um noch flexibler und leichter in einer integrierten Designumgebung Berichte und Dashboards zu entwickeln. Wir zeigen Dir hier, welche neuen Features das Update mit sich bringt und wie es Dich beim Erstellen von Berichten unterstützt.
SAP BW stellt als Business-Intelligence-Paket viele Möglichkeiten für ein performantes Reporting bereit – birgt jedoch auch zahlreiche Hemmnisse, die die Performance merklich verlangsamen. Am Beispiel von in der Anwendung verfügbaren Berichtsfiltern zeigt dieser Beitrag, wie kleinste Adaptionen die Leistung von SAP BW mindern und wie eine performante Einstellung der Filtermöglichkeiten zu besseren Ergebnissen führen kann.