Je souhaite utiliser une source de données python dans Re: Dash pour obtenir les résultats de la requête.

introduction

Re: Dash est pour les ingénieurs qui ne veulent pas faire d'écrans Il est très pratique de créer un écran ou un graphique simplement en formant une requête. Mais voulez-vous obtenir un peu plus de données que de simples requêtes? De plus, souhaitez-vous combiner les résultats de requêtes provenant de différentes sources de données? ??

Re: Dash a une "source de données python" Avec un petit réglage, vous pourrez jouer avec les données avec python. C'était très pratique, donc cette fois je vais présenter les principales fonctions et l'utilisation de la méthode de réglage.

Rendre la source de données Python disponible

Par défaut, les sources de données python sont désactivées. Si vous ajoutez les paramètres suivants, vous pouvez spécifier python à partir de la source de données.

Modifier /opt/redash/.env

/opt/redash/.env


export REDASH_ADDITIONAL_QUERY_RUNNERS=redash.query_runner.python

Refléter les paramètres

sudo supervisorctl restart redash_server

Ajouter une nouvelle source de données

Cliquez sur «+ Nouvelles sources de données» dans «Sources de données». Puisque Python peut être sélectionné pour Type, sélectionnez-le, entrez un nom approprié dans Nom, et enregistrez Vous permet de sélectionner une source de données Python lors de la création d'une requête.

redash_datasource.png

redash_datasource_select.png

Préparez les données que vous souhaitez consulter

Préparez les données avant d'aller à l'école à l'avance. J'omettrai les détails de cet article, mais définissons une exécution périodique et acquérons et mettons en cache uniquement les données nécessaires au moment opportun.

Cette fois, je me préparerai dans le but de "combiner et afficher les valeurs numériques entre différentes sources de données". Deux résultats de requête simples sont préparés comme indiqué ci-dessous.

Données ①

Notez l'ID de requête de la requête créée. Cette fois, cette requête est «ID de requête = 76»

redash_data1.png

Données ②

Notez l'ID de requête de la requête créée. Cette fois, cette requête est «ID de requête = 77»

redash_data2.png

Essayons les données

Quel genre d'hypothèse mis à part w À partir des résultats de requête obtenus à partir de deux sources de données différentes Essayons d'additionner les COUNT avec le même ID et de les afficher.

Tout le code que j'ai écrit à peu près

Obtenez le résultat de la requête à l'aide de l'API, écrivez le processus que vous souhaitez faire avec python et définissez le résultat avec l'API OK

#Obtenir le résultat de la requête de l'ID de requête spécifié
queryResults1 = get_query_result(76)
queryResults2 = get_query_result(77)

result = {}
for rows1 in queryResults1['rows']:
    for rows2 in queryResults2['rows']:
        if rows1['id'] == rows2['id']:
            #Ajouter des données de ligne
            add_result_row(result, {
                'id'    :rows1['id'],
                'count' :rows1['count'] + rows2['count']
            })
            break

#Spécifiez le nom de la colonne
add_result_column(result, 'id', '', 'integer')
add_result_column(result, 'count', '', 'integer')

redash_result.png

API clé

API Contenu Exemple
get_query_result(queryId) Obtenir le résultat de la requête de l'ID de requête spécifié get_query_result(1)
add_result_row(result, values) Ajouter des données de ligne add_result_row(result, {'id':rows['id'],'count':rows['count']})
add_result_column(result, columnName, friendlyName, columnType) Spécifiez le nom de la colonne add_result_column(result, 'id', '', 'integer')
execute_query(dataSourceName, query) Exécuter une requête sur dataSourceName pour obtenir le résultat execute_query('testDataSource', 'select * FROM test WHERE id = 1')

Pour plus d'informations, veuillez lire Actual Re: dash source interne

Si vous souhaitez utiliser un module

Il peut être utilisé en ajoutant un module à partir de l'écran de configuration de la source de données. Si vous souhaitez en ajouter plusieurs, ajoutez-les séparés par des virgules. Après l'enregistrement, vous pouvez l'utiliser simplement en l'important dans le code.

redash_module.png

à la fin

Puisque vous pouvez écrire du code en python normalement, vous pouvez effectuer un traitement un peu compliqué. Je pense que la gamme d'utilisation s'élargira. Surtout, c'est génial de ne pas avoir à faire d'écran. .. Veuillez l'utiliser!

Article associé

Je souhaite mettre à niveau Re: Dash Résumé des astuces utiles avec Re: Dash

Recommended Posts

Je souhaite utiliser une source de données python dans Re: Dash pour obtenir les résultats de la requête.
Essayez d'obtenir des métriques CloudWatch avec la source de données python re: dash
Je veux créer une fenêtre avec Python
Je veux facilement implémenter le délai d'expiration en python
Je veux écrire en Python! (2) Écrivons un test
Je veux échantillonner au hasard un fichier avec Python
Je veux travailler avec un robot en python.
Je veux utiliser le jeu de données R avec python
[Python] Je souhaite obtenir un ensemble commun entre numpy
J'ai essayé "Comment obtenir une méthode décorée en Python"
Je veux ajouter un joli complément à input () en python
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
Je veux imprimer dans la notation d'inclusion
Je veux utiliser jar de python
Je veux créer un environnement Python
Comment obtenir stacktrace en python
[Mémo Python] Je souhaite obtenir un nombre hexadécimal à 2 chiffres à partir d'un nombre décimal
Je souhaite convertir une table convertie en PDF en Python en CSV
Je veux colorer une partie de la chaîne Excel avec Python
Un mémorandum parce que j'ai trébuché en essayant d'utiliser MeCab avec Python
Je veux faire un patch monkey seulement en partie en toute sécurité avec Python
Je veux faire le test de Dunnett en Python
Je veux utiliser MATLAB feval avec python
Je veux faire un jeu avec Python
J'ai essayé d'obtenir des données CloudWatch avec Python
Je veux fusionner des dictionnaires imbriqués en Python
Je souhaite utiliser le répertoire temporaire avec Python2
Je veux obtenir les données de League of Legends ③
Je veux obtenir les données de League of Legends ②
Je veux utiliser le solveur ceres de python
Je veux obtenir les données de League of Legends ①
Je veux écrire dans un fichier avec Python
Je veux afficher la progression en Python!
Utilisez os.getenv pour obtenir des variables d'environnement en Python
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
Je souhaite créer une file d'attente prioritaire pouvant être mise à jour avec Python (2.7)
Utilisez PIL en Python pour extraire uniquement les données souhaitées d'Exif
Le programme Python est lent! Je veux accélérer! Dans ce cas ...
Je veux obtenir le nom du fichier, le numéro de ligne et le nom de la fonction dans Python 3.4
Je veux écrire en Python! (1) Vérification du format de code
Je veux répéter plusieurs fois un générateur Python
Je veux donner un group_id à une trame de données pandas
Je veux faire la transition avec un bouton sur le ballon
Je veux utiliser self avec Backpropagation (tf.custom_gradient) (tensorflow)
Même avec JavaScript, je veux voir Python `range ()`!
J'ai essayé d'implémenter un pseudo pachislot en Python
[Python] Je veux faire d'une liste imbriquée un taple
Je veux écrire en Python! (3) Utiliser des simulacres
J'ai essayé de résumer comment utiliser les pandas de python
Je veux faire fonctionner un ordinateur quantique avec Python
Je veux faire quelque chose avec Python à la fin
Je veux manipuler des chaînes dans Kotlin comme Python!
[Python] Je veux ajouter un répertoire statique avec Flask [Je veux utiliser autre chose que statique]
[Python] Je souhaite utiliser uniquement l'index lors de la mise en boucle d'une liste avec une instruction for
Je souhaite obtenir des attributs de données personnalisés de HTML sous forme d'éléments à l'aide de Python Selenium
Je veux pouvoir analyser des données avec Python (partie 3)
J'ai essayé d'implémenter un automate cellulaire unidimensionnel en Python
Je veux faire quelque chose comme sort uniq en Python
Je veux démarrer beaucoup de processus à partir de python