Ich möchte eine Python-Datenquelle in Re: Dash verwenden, um Abfrageergebnisse zu erhalten

Einführung

Betreff: Dash ist für Ingenieure gedacht, die keine Bildschirme erstellen möchten Es ist sehr praktisch, einen Bildschirm oder ein Diagramm zu erstellen, indem Sie einfach eine Abfrage erstellen. Aber möchten Sie ein bisschen mehr Daten erhalten als nur Abfragen? Möchten Sie außerdem Abfrageergebnisse aus verschiedenen Datenquellen kombinieren? ??

Betreff: Dash hat eine "Python-Datenquelle" Mit einer kleinen Einstellung können Sie mit Python Daten bearbeiten. Dies war sehr praktisch, daher werde ich dieses Mal die Hauptfunktionen und die Verwendung der Einstellungsmethode vorstellen.

Stellen Sie die Python-Datenquelle zur Verfügung

Standardmäßig sind Python-Datenquellen deaktiviert. Wenn Sie die folgenden Einstellungen hinzufügen, können Sie Python aus der Datenquelle angeben.

Ändern Sie /opt/redash/.env

/opt/redash/.env


export REDASH_ADDITIONAL_QUERY_RUNNERS=redash.query_runner.python

Reflektieren Sie die Einstellungen

sudo supervisorctl restart redash_server

Neue Datenquelle hinzufügen

Klicken Sie unter "Datenquellen" auf "+ Neue Datenquellen". Da "Python" für "Typ" ausgewählt werden kann, wählen Sie es aus, geben Sie einen geeigneten Namen in "Name" ein und "Speichern" Ermöglicht die Auswahl einer Python-Datenquelle beim Erstellen einer Abfrage.

redash_datasource.png

redash_datasource_select.png

Bereiten Sie die Daten vor, zu denen Sie gehen möchten

Bereiten Sie die Daten vor dem Schulbesuch vor. Ich werde die Details in diesem Artikel weglassen, aber lassen Sie uns die regelmäßige Ausführung festlegen und nur die erforderlichen Daten zum erforderlichen Zeitpunkt erfassen und zwischenspeichern.

Dieses Mal werde ich mich auf den Zweck vorbereiten, "die numerischen Werte zwischen verschiedenen Datenquellen zu kombinieren und anzuzeigen". Zwei einfache Abfrageergebnisse werden wie unten gezeigt vorbereitet.

Daten ①

Notieren Sie sich die Abfrage-ID der erstellten Abfrage. Diesmal lautet diese Abfrage "Abfrage-ID = 76"

redash_data1.png

Daten ②

Notieren Sie sich die Abfrage-ID der erstellten Abfrage. Diesmal lautet diese Abfrage "Abfrage-ID = 77"

redash_data2.png

Probieren wir die Daten aus

Welche Art von Annahme beiseite w Aus Abfrageergebnissen aus zwei verschiedenen Datenquellen Versuchen wir, die COUNTs mit derselben ID zu addieren und anzuzeigen.

Den ganzen Code habe ich grob geschrieben

Rufen Sie das Abfrageergebnis mithilfe der API ab, schreiben Sie den Prozess, den Sie mit Python ausführen möchten, und legen Sie das Ergebnis mit der API OK fest

#Ruft das Abfrageergebnis der angegebenen Abfrage-ID ab
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']:
            #Zeilendaten hinzufügen
            add_result_row(result, {
                'id'    :rows1['id'],
                'count' :rows1['count'] + rows2['count']
            })
            break

#Geben Sie den Spaltennamen an
add_result_column(result, 'id', '', 'integer')
add_result_column(result, 'count', '', 'integer')

redash_result.png

Schlüssel-API

API Inhalt Beispiel
get_query_result(queryId) Ruft das Abfrageergebnis der angegebenen Abfrage-ID ab get_query_result(1)
add_result_row(result, values) Zeilendaten hinzufügen add_result_row(result, {'id':rows['id'],'count':rows['count']})
add_result_column(result, columnName, friendlyName, columnType) Geben Sie den Spaltennamen an add_result_column(result, 'id', '', 'integer')
execute_query(dataSourceName, query) Führen Sie eine Abfrage für dataSourceName aus, um das Ergebnis zu erhalten execute_query('testDataSource', 'select * FROM test WHERE id = 1')

Weitere Informationen finden Sie unter Aktuelle Re: Dash-interne Quelle.

Wenn Sie ein Modul verwenden möchten

Sie können es verwenden, indem Sie ein Modul aus dem Einstellungsbildschirm der Datenquelle hinzufügen. Wenn Sie mehr als eine hinzufügen möchten, fügen Sie diese durch Kommas getrennt hinzu. Nach dem Speichern können Sie es verwenden, indem Sie es einfach in den Code importieren.

redash_module.png

schließlich

Da Sie normalerweise Code in Python schreiben können, können Sie eine etwas komplizierte Verarbeitung durchführen. Ich denke, dass der Anwendungsbereich erweitert wird. Vor allem ist es toll, wenn Sie keinen Bildschirm erstellen müssen. .. Bitte benutzen Sie es!

In Verbindung stehender Artikel

Ich möchte Re: Dash aktualisieren Zusammenfassung nützlicher Tricks mit Re: Dash

Recommended Posts

Ich möchte eine Python-Datenquelle in Re: Dash verwenden, um Abfrageergebnisse zu erhalten
Versuchen Sie, CloudWatch-Metriken mit der Python-Datenquelle re: dash abzurufen
Ich möchte mit Python ein Fenster erstellen
Ich möchte Timeout einfach in Python implementieren
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Ich möchte eine Datei mit Python zufällig testen
Ich möchte mit einem Roboter in Python arbeiten.
Ich möchte R-Datensatz mit Python verwenden
[Python] Ich möchte einen gemeinsamen Satz zwischen numpy erhalten
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
Ich möchte in der Einschlussnotation drucken
Ich möchte ein Glas aus Python verwenden
Ich möchte eine Python-Umgebung erstellen
Wie bekomme ich Stacktrace in Python?
[Python-Memo] Ich möchte eine zweistellige Hexadezimalzahl aus einer Dezimalzahl erhalten
Ich möchte eine in Python in PDF konvertierte Tabelle wieder in CSV konvertieren
Ich möchte einen Teil der Excel-Zeichenfolge mit Python einfärben
Ein Memorandum, weil ich beim Versuch, MeCab mit Python zu verwenden, gestolpert bin
Ich möchte Affenpatches nur teilweise sicher mit Python machen
Ich möchte Dunnetts Test in Python machen
Ich möchte MATLAB feval mit Python verwenden
Ich möchte ein Spiel mit Python machen
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich möchte verschachtelte Dicts in Python zusammenführen
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich möchte die Daten von League of Legends ③ erhalten
Ich möchte die Daten von League of Legends ② erhalten
Ich möchte Ceres Solver aus Python verwenden
Ich möchte League of Legends-Daten erhalten ①
Ich möchte mit Python in eine Datei schreiben
Ich möchte den Fortschritt in Python anzeigen!
Verwenden Sie os.getenv, um Umgebungsvariablen in Python abzurufen
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Verwenden Sie PIL in Python, um nur die gewünschten Daten aus Exif zu extrahieren
Python-Programm ist langsam! Ich möchte beschleunigen! In einem solchen Fall ...
Ich möchte den Dateinamen, die Zeilennummer und den Funktionsnamen in Python 3.4 erhalten
Ich möchte in Python schreiben! (1) Überprüfung des Codeformats
Ich möchte einen Python-Generator viele Male iterieren
Ich möchte einem Pandas-Datenrahmen eine group_id geben
Ich möchte mit einem Knopf am Kolben übergehen
Ich möchte mich mit Backpropagation (tf.custom_gradient) (Tensorflow) selbst verwenden.
Auch mit JavaScript möchte ich Python `range ()` sehen!
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
[Python] Ich möchte aus einer verschachtelten Liste einen Taple machen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Ich möchte einen Quantencomputer mit Python betreiben
Ich möchte am Ende etwas mit Python machen
Ich möchte Strings in Kotlin wie Python manipulieren!
[Python] Ich möchte mit Flask ein statisches Verzeichnis hinzufügen. [Ich möchte etwas anderes als statisch verwenden.]
[Python] Ich möchte nur den Index verwenden, wenn ich eine Liste mit einer for-Anweisung schleife
Ich möchte benutzerdefinierte Datenattribute von HTML als Elemente mit Python Selenium erhalten
Ich möchte Daten mit Python analysieren können (Teil 3)
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
Ich möchte so etwas wie Uniq in Python sortieren
Ich möchte viele Prozesse von Python aus starten