Dies ist der Artikel am 11. Tag des "WACUL Adventskalenders 2016". Dieses Mal werde ich einen Eindruck und eine Einführung von Touching Superset schreiben, einem Visualisierungswerkzeug von Airbnb.
Es ist offiziell unter http://airbnb.io/superset/index.html geschrieben. Ich persönlich erkenne es als das folgende Werkzeug.
Als ich es mit Ubuntu 16.04 ausprobierte, war es einfach einzuführen (das Verfahren ist so einfach wie auf der offiziellen Website).
superset unterstützt verschiedene Ausgabeformate wie Grafikausgabe, json und csv, um die akkumulierten Daten auszugeben. Darüber hinaus unterstützt die Eingabequelle auch verschiedene Typen wie MySQL und PostgresSQL.
Dashboard, Slice
Die Obermenge enthält Komponenten namens "Dashboard" und "Slice". Es ist, als wäre ein Dashboard eine Sammlung von Slices. Ich verstehe, dass Slice einfach eine sinnvolle Anzeigeeinheit im Dashboard ist.
In diesem Bild ist der gesamte Bildschirm Dashboard, "Regionsfilter", "% ländlich", "Wachstumsrate" usw. sind Slice.
Einstellungen wie das Slice, das auf dem Dashboard-Bildschirm platziert werden soll, können über den Verwaltungsbildschirm vorgenommen werden.
Es ist etwas schwer zu erkennen, aber notieren Sie sich, welches Slice im Dashboard im Formular "Slices" und wo im Formular "JSON positionieren" abgelegt werden soll.
Slice, Visualization Type, Datasource
Slice besteht aus zwei Komponenten: den "Daten selbst" und der "Anzeigemethode". Die Komponenten, die ihre jeweiligen Rollen spielen, werden in der Obermenge als "Datenquelle" und "Visualisierungstyp" bezeichnet. In der Obermenge sind viele Visualisierungstypen verfügbar.
(↑ ist ein Teil)
superset ist eine Webanwendung, die auf Flask basiert. Jeder, der mit der Entwicklung von Kolben vertraut ist, kann diese leicht anpassen.
Es gibt viele Methoden zur Authentifizierung und Zugriffskontrolle.
Sie können Rollen als Benutzerattribute festlegen und die für jede Rolle zulässigen Aktionen festlegen. Wenn es sich um eine Aktion vom Typ "Aktualisierung" handelt, bleibt ein Protokoll erhalten.
Wenn Sie versuchen, Ihre eigenen zu erstellen, wird dies viel Arbeit kosten, aber ich bin froh, dass eine Obermenge realisiert werden kann, ohne eine einzige Codezeile zu schreiben.
Übrigens ist die Standardeinstellung eine Art der Kennwortauthentifizierung, die in eine selbstverwaltete Datenbank schreibt. Wie bereits erwähnt, handelt es sich jedoch um eine Flask-basierte Anwendung, sodass der Authentifizierungstyp wie OAuth geändert werden kann. (Ich denke, dass die Entwicklung um die Sicht für OAuth notwendig ist)
Da es eine große Sache ist, werde ich versuchen, Superset mit meinen eigenen Daten zu verwenden. Diesmal habe ich folgendes gemacht:
Schreiben Sie zunächst Folgendes in superset_config.py.
SQLALCHEMY_DATABASE_URI = 'mysql://root:testtest@localhost/tdb1'
Sie sollten nun in der Lage sein, eine Verbindung zur Datenbank mit dem Namen root user, password testtest, tdb1 herzustellen. Initialisieren Sie als Nächstes die Obermenge einschließlich der Benutzererstellung wie folgt.
fabmanager create-admin --app superset
superset db upgrade
superset init
Das ist es. Stellen Sie sicher, dass die folgende Tabelle erstellt wurde.
mysql> show tables;
+-------------------------+
| Tables_in_tdb1 |
+-------------------------+
| ab_permission |
| ab_permission_view |
| ab_permission_view_role |
| ab_register_user |
| ab_role |
| ab_user |
| ab_user_role |
| ab_view_menu |
| access_request |
| alembic_version |
| clusters |
| columns |
| css_templates |
| dashboard_slices |
| dashboard_user |
| dashboards |
| datasources |
| dbs |
| favstar |
| logs |
| metrics |
| query |
| slice_user |
| slices |
| sql_metrics |
| table_columns |
| tables |
| url |
+-------------------------+
28 rows in set (0.00 sec)
Bereiten Sie zuerst die Daten vor. Dieses Mal habe ich Google Trend-Daten verwendet. 2015/12 / 01-2015 / 12/31, um tägliche Ergebnisse mit den Schlüsselwörtern "Liebhaber" und "Rückladung" zu erhalten und zu visualisieren.
Bereiten Sie zuerst einen Tisch wie diesen vor
mysql> desc trend201512;
+---------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| date | date | NO | | NULL | |
| score_koibito | int(11) | NO | | NULL | |
| score_riajuu | int(11) | NO | | NULL | |
+---------------+---------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
Importieren Sie anschließend die Daten und registrieren Sie sie als Datenquelle auf der Superset-Seite.
Nachdem Sie verschiedene Einstellungen vorgenommen haben, erstellen Sie ein Slice mit dem Visualisierungstyp "Tabellenansicht" und "Liniendiagramm". Daraufhin wird ein Dashboard wie das folgende angezeigt.
Aus irgendeinem Grund wurde gelesen, dass die Punktzahlen am 24. und 25. hoch waren, obwohl es ein Wochentag war.
Übrigens habe ich bei der Erstellung dieses Diagramms auch die (persönlich) schmerzhaften Punkte der Obermenge gesehen.
Das Verkaufsargument von Superset ist zunächst, dass "Daten extrahiert (als Grafik angezeigt oder exportiert) werden können, ohne SQL zu schreiben".
Dies war jedoch auch der Grund, warum ich mich schmerzhaft fühlte.
Wenn Sie beispielsweise versuchen, ein eigenes System zu erstellen, um dieses Diagramm zu erhalten, müssen Sie die zurückgegebenen Daten nur schnell um Highcharts zeichnen, während Sie eine Abfrage wie select date, score_koibito, score_riajuu von trend201512 ausgeben. Ich werde. Es gibt nichts Schwieriges.
Wenn Sie dies in Superset in SQL tun, müssen Sie nur die Felder angeben und eine separate Arbeit namens "Metrikdefinition" ausführen. Was ist das? Es ist ein Mechanismus, um eine Aggregatfunktion für jede Tabelle in ein Feld zu beißen und ihr einen Alias zu geben. Standardmäßig werden count, avg, sum usw. vorbereitet. Legen Sie außerdem Metriken entsprechend dem Visualisierungstyp fest.
In diesem Beispiel benötigen wir im Fall der Tabellenansicht überhaupt keine Aggregatfunktion, daher haben wir absichtlich einen Metriktyp namens "Identität" definiert. Infolgedessen sieht die von superset zum Erstellen der Tabellenansicht ausgegebene SQL folgendermaßen aus:
SELECT score_koibito AS score_koibito,
score_riajuu AS score_riajuu
FROM trend201512
WHERE date >= STR_TO_DATE('1916-12-11 08:52:13', '%%Y-%%m-%%d %%H:%%i:%%s')
AND date <= STR_TO_DATE('2016-12-11 08:52:13', '%%Y-%%m-%%d %%H:%%i:%%s') LIMIT 50
Diese SQL wird automatisch durch Manipulieren der Benutzeroberfläche generiert, und es ist nicht möglich, die SQL manuell zu schreiben und auszuführen. Außerdem muss das Datum angegeben werden, und es ist schwierig, das Datum zu schreiben, da die ursprüngliche DSL-ähnliche Notation des Supersets verwendet wird.
... Ich habe versucht, es hart zu schreiben, aber kurz gesagt, ich wollte, dass es die Operation der Datenextraktion durch SQL unterstützt (obwohl ich den Vorteil verstehe, dass die Operation durch die Benutzeroberfläche die Routinearbeit effizienter macht). Da sich die Elemente, die in der Benutzeroberfläche angegeben werden können, je nach Visualisierungstyp unterscheiden (dies ist aufgrund der Datenstruktur natürlich), sind die Lernkosten meiner Meinung nach nicht so günstig, wie es aussieht.
superset scheint in der Lage zu sein, bei schweren Abfragen asynchron mit Sellerie zu arbeiten. Auf dieser Seite gibt es Hinweise http://airbnb.io/superset/sqllab.html
Support for long-running queries - uses the Celery distributed queue
to dispatch query handling to workers
supports defining a “results backend” to persist query results
Ich schrieb über Superset, ein Visualisierungstool von Airbnb. Ich habe einige Beschwerden geschrieben, aber ich denke, es ist ein großartiges Tool, weil es viele Funktionen bietet. Dies wird insbesondere Personen empfohlen, die hauptsächlich Daten analysieren und keine Zeit für die Visualisierung aufwenden können. Ich dachte auch, dass es zur Überwachung verwendet werden könnte, wenn es gut gemacht wird.
Recommended Posts