Ceci est l'article sur le 11ème jour du "Calendrier de l'Avent WACUL 2016". Cette fois, j'écrirai une impression et une introduction de toucher le sur-ensemble, un outil de visualisation réalisé par airbnb.
Il est officiellement écrit à l'adresse http://airbnb.io/superset/index.html. Je le reconnais personnellement comme l'outil suivant.
De plus, quand je l'ai essayé avec ubuntu 16.04, c'était facile à introduire (la procédure est aussi simple que sur le site officiel).
superset prend en charge divers formats de sortie tels que la sortie graphique, json et csv pour générer les données accumulées. En outre, la source d'entrée prend également en charge divers types tels que MySQL et PostgresSQL.
Dashboard, Slice
Le sur-ensemble a des composants appelés "Dashboard" et "Slice". C'est comme si un tableau de bord était une collection de tranches. Je comprends que Slice est simplement une unité d'affichage significative dans Dashboard.
Dans cette image, tout l'écran est Tableau de bord, «Filtre de région», «% rural», «Taux de croissance», etc. sont Slice.
Les paramètres tels que la tranche à placer sur l'écran du tableau de bord peuvent être définis à partir de l'écran de gestion.
C'est un peu difficile à voir, mais écrivez quelle tranche mettre sur le tableau de bord sur le formulaire "Slices" et où le mettre sur le formulaire "Position JSON".
Slice, Visualization Type, Datasource
Il y a deux composants qui composent Slice: les «données elles-mêmes» et la «méthode d'affichage». Les composants qui jouent leurs rôles respectifs sont appelés «source de données» et «type de visualisation» dans le sur-ensemble. Il existe de nombreux types de visualisation disponibles dans le sur-ensemble.
(↑ fait partie)
superset est une application Web basée sur Flask. Toute personne familiarisée avec le développement Flask le trouvera facile à personnaliser.
Il existe de nombreuses méthodes d'authentification et de contrôle d'accès.
Vous pouvez définir des rôles en tant qu'attributs utilisateur et vous pouvez également définir les actions autorisées pour chaque rôle. De plus, s'il s'agit d'une action de type mise à jour, un journal restera.
Si vous essayez de créer le vôtre, cela prendra beaucoup de travail, mais je suis heureux que le sur-ensemble puisse être réalisé sans écrire une seule ligne de code.
À propos, la valeur par défaut est un type d'authentification par mot de passe qui écrit dans une base de données autogérée, mais comme indiqué précédemment, il s'agit d'une application basée sur Flask, il est donc possible de modifier le type d'authentification tel que OAuth. (Je pense que le développement autour de la vue est nécessaire pour OAuth)
Comme c'est un gros problème, j'essaierai d'utiliser un sur-ensemble avec mes propres données. Cette fois, j'ai fait ce qui suit:
Tout d'abord, écrivez ce qui suit dans superset_config.py.
SQLALCHEMY_DATABASE_URI = 'mysql://root:testtest@localhost/tdb1'
Vous devriez maintenant pouvoir vous connecter à la base de données nommée root user, password testtest, tdb1. Ensuite, initialisez le sur-ensemble, y compris la création d'utilisateur, comme suit.
fabmanager create-admin --app superset
superset db upgrade
superset init
C'est tout. Confirmez que le tableau suivant a été créé.
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)
Préparez d'abord les données. Cette fois, j'ai utilisé les données Google Trend. 2015/12 / 01-2015 / 12/31 pour obtenir et visualiser les scores quotidiens avec les mots-clés "amant" et "charge arrière".
Tout d'abord, préparez une table comme celle-ci
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)
Après cela, importez les données et enregistrez-les comme source de données du côté du sur-ensemble.
Après avoir défini divers paramètres, créez une tranche avec le type de visualisation défini sur la vue tableau et le graphique en courbes, et vous aurez un tableau de bord comme celui ci-dessous.
Pour une raison quelconque, il a été lu que les scores des 24 et 25 étaient élevés même si c'était un jour de semaine.
En passant, en faisant ce graphique, j'ai également vu les points (personnellement) douloureux du sur-ensemble.
Tout d'abord, le point de vente du superset est que "les données peuvent être extraites (affichées sous forme de graphique ou exportées) sans écrire de SQL".
Cependant, c'était aussi la raison pour laquelle je me sentais douloureux.
Si vous essayez de créer votre propre système pour obtenir ce graphique, par exemple, il vous suffit de dessiner rapidement les données renvoyées autour de highcharts tout en émettant une requête comme select date, score_koibito, score_riajuu de trend201512; Je vais. Il n'y a rien de difficile.
Par contre, dans un sur-ensemble, si vous le faites en SQL, vous n'avez qu'à spécifier les champs, et vous devez faire un travail séparé appelé "définition des métriques". Il s'agit d'un mécanisme pour insérer une fonction d'agrégation dans un champ pour chaque table et lui donner un alias, et par défaut, count, avg, sum, etc. sont préparés. Définissez également les métriques en fonction du type de visualisation.
Dans cet exemple, dans le cas de la vue table, nous n'avons pas besoin d'une fonction d'agrégation en premier lieu, nous avons donc délibérément défini un type de métrique appelé "identité". En conséquence, le SQL émis par le sur-ensemble pour créer la vue de table ressemble à ceci:
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
Ce SQL est généré automatiquement en manipulant l'interface utilisateur, et il n'est pas possible d'écrire et d'exécuter manuellement le SQL. En outre, la date doit être spécifiée et il est difficile d'écrire la date car la notation DSL originale du surensemble est utilisée.
... j'ai essayé de l'écrire dur, mais en bref, je voulais qu'il prenne en charge l'opération d'extraction de données par SQL (bien que je comprenne le mérite que le travail de routine soit rationalisé par l'opération par UI). De plus, étant donné que les éléments pouvant être spécifiés dans l'interface utilisateur diffèrent en fonction du type de visualisation (cela est naturel en raison de la structure des données), je pense que le coût d'apprentissage n'est pas aussi bon marché qu'il en a l'air.
superset semble être capable de fonctionner de manière asynchrone avec le céleri lors du lancement de requêtes lourdes. Il y a des indices sur cette page 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
J'ai écrit sur superset, un outil de visualisation créé par airbnb. J'ai écrit quelques plaintes, mais je pense que c'est un excellent outil car il regorge de fonctionnalités. En particulier, il est recommandé aux personnes qui analysent principalement des données et ne peuvent pas passer de temps à la visualisation. J'ai également pensé qu'il pourrait être utilisé pour le suivi s'il était bien fait.
Recommended Posts