Reporting und Analyse mit Metabase

  • 03.07.2018

Seit längerem sind wir bei SpikeTime auf der Suche nach einem guten Tool zur Erstellung von Dashboards um unsere Kennzahlen im Überblick zu behalten. Das Reporting Tool sollte auf jeden Fall eine Weblösung sein, die wir möglichst einfach installieren können. Außerdem hatten wir für dieses Projekt nur ein sehr geringes Budget veranschlagt, weshalb die üblichen Verdächtigen wie Cognos, SAP Business Objects etc. von vornherein ausgeschieden sind.

Nach etwas Recherche fiel unsere Wahl auf Metabase, ein Open-Source Projekt was sehr vielversprechend klang. Vor allem die Installation sollte laut einhelliger "Internet-Meinung" sehr einfach sein.

Metabase Installation

Um Metabase zu installieren hat man drei Möglichkeiten. Die Installation als MacOS Package, das Ausführen einer JAR Datei oder via Docker. Aufgrund der einfachen Handhabung haben wir uns dazu entschieden die JAR Datei zu verwenden. Um Metabase zu starten muss lediglich eine aktuelle Version des Java Development Kit installiert sein.

Metabase kann dann mit folgendem Kommando gestartet werden ...

java -jar metabase.jar

... und ist über localhost:3000 erreichbar. Um einen anderen Port zu wählen, kann die Umgebungsvariable MB_JETTY_PORT vor dem Start der JAR Datei auf einen anderen Wert geändert werden.

Der erste Schritt nach dem initialen Start ist das Anlegen eines Administrators.

Metabase Setup Maske

Metabase Datenbank Setup

Der nächste Schritt ist die Verbindung mit einer Datenbank.

Metabase Datenbank Verbindung anlegen

Nachdem die Verbindung zur eigenen Datenbank erstellt wurde, können die Metadaten der Tabellen editiert werden. Leider erlaubt Metabase zur Zeit noch keine Definition eines "echten" Datenmodells. Das heißt SQL Joins können nicht erstellt werden. Zu diesem Thema gibt es einen detaillierten Blog Post von Metabase So about those Joins

Dieses sehr komplexe Thema soll hier allerdings nicht weiter behandelt werden.

Da wir kein dediziertes Data Warehouse für unsere SpikeTime Applikations Datenbank erzeugen, laufen unsere Auswertungen aktuell noch über einfache Datenbank Views. Um die Daten unserer Benutzer nicht zu gefährden, werden in diesen Views keinerlei persönliche Daten angezeigt. Der Zugriff durch Metabase erfolgt über einen separaten Datenbank User der nur lesende Berechtigungen auf die Auswertungs-Views hat.

Die detaillierte Dokumentation wie das Metabase "Datenmodell" erstellt wird, findet sich hier Setting up Metabase

Metabase Questions und Dashboards erstellen

Um Daten in Metabase zu analysieren erzeugt man so genannte Questions (Fragen). Diese Questions spiegeln eine (wie der Name schon sagt) konkrete Fragestellung wieder, die Metabase mit Hilfe der Daten beantwortet. Questions können beispielsweise sein: "Wie viele Kunden habe ich aktuell?" oder "Wie viel Umsatz habe ich dieses Jahr bereits erwirtschaftet?".

Die Questions können entweder per Drag and Drop oder, für komplexe Fragen, als SQL Statement definiert werden.

Metabase Questions erstellen

Einmal definierte Questions können auf Dashboards angeordnet werden.

Mehr dazu findet sich in der offiziellen Metabase Dokumentation: Asking questions und Dashboards

Fazit

Bisher können wir von SpikeTime (fast) nur positives zum Reporting Tool Metabase berichten. Das Tool lässt sich in wenigen Minuten installieren und das Setup ist sehr intuitiv. Das Erstellen von Charts, Tabellen und Kennzahlen als Questions und die Anordnung auf Dashboards gelingt auch wenig erfahreren Benutzern. Der einzige Wermutstropfen ist die fehlende Definition eines echten Datenmodells, wodurch sich etwas Zusatzaufwand in der Datenbank ergibt und die Abfragezeiten naturgemäß etwas länger sind.

Dieser Artikel beschreibt nur einen kleinen Teil der Funktionen von Metabase. Für eine komplette Übersicht aller Features, besucht bitte die offizielle Webseite von Metabase https://www.metabase.com

Feedback

Wir freuen uns über jegliches Feedback zu SpikeTime und auch zu diesem Artikel. Dazu schreibt eine E-Mail an mail@spiketime.de oder verwendet das Supportformular in SpikeTime.