Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!
Free Trial

Blog - Deutsch

Erkenntnisse und Ideen von den besten Analytics-Experten.
grossal
15 - Aurora
15 - Aurora

Der normale Business-User schaltet bereits bei der reinen Erwähnung von Programmiersprachen ab: „Das kann ich nicht“ – dabei ist es eigentlich ganz einfach. Es braucht nicht viel, um erste eigene Python-Skripte und Macros in Alteryx zu erstellen, die die existierenden Funktionen ergänzen. Wie einfach das geht, zeige ich euch in diesem Blog, in welchem wir sehen werden, wie man Smartphone Benachrichtigungen mit Alteryx erstellen kann.

 

Wer statt einem Blog lieber eine Video-Variante bevorzugt, kann sich die Aufzeichnung der virtuellen Alteryx Dallas User Group (danke @Deanna) anschauen und meinen Beitrag zu „Showcasing the power of small Python macros“ in Video Form genießen. Der Link dazu wird ergänzt sobald die Aufzeichnung verfügbar ist.

 

Warum eigentlich Python?

Alteryx bietet einige SDK-Pakete um Custom-Tools zu erstellen, warum also Python? Weil es im Alteryx-Designer auch ein Python-Tool gibt, so dass wir all das drumherum ignorieren können. Zudem ist Python die zur Zeit vermutlich beliebteste Programmiersprache und es gibt enorm viele freiverfügbare Bibliotheken, die man kostenlos verwenden kann.

 

Android Benachrichtigungen in Alteryx generieren

In diesem Blog möchte ich euch zeigen, wie wir ein simples Python Macro bauen können, welches es uns erlaubt, am Ende eines Workflows eine kurze Benachrichtigung an unser Telefon zu schicken. Ich hatte in der Vergangenheit bei langen Workflows (vor allem auf dem Server) immer das Problem: Wann ist dieser eigentlich fertig? Natürlich kann man eine Mail verschicken, aber das fand ich immer äußerst nervig, warum nicht einfach eine kurze Android Benachrichtigung?

 

Der Anfang

Google_Python_Create_Phone_Notification.png

 

Der erste Schritt in unserem kleinen Projekt ist simpel: Wir suchen einfach bei Google was für Möglichkeiten wir haben. Wir stoßen dabei schnell über Tools wie Pushsaver und Pushbullet – ich persönlich habe mich dabei für letzteres entschieden. Daraufhin können wir unsere Suche nochmal verfeiern und „Python Pushbullet“ suchen. Einer der ersten Treffer ist dabei die PyPi-Seite mit allem was wir wissen müssen. PyPi ist dabei so etwas wie Art Alteryx Gallery für Python Bilbliotheken.

 

Das Python-Tool | Die Vorbereitung

Ich beginne die Arbeit für Python-Macros immer gleich: Ich starte mit einem leeren Text Input Tool und befülle dieses lediglich mit einem X, hänge ein Python-Tool dahinter und führe den Workflow einmal aus.

 

2021-02-07 15-43-43.png

 

Nachdem wir auf das Python-Tool geklickt haben, können wir all den Standard-Code herauswerfen indem wir dreimal auf das Scheren-Symbol klicken.

 

2021-02-07 15-45-33.png

 

Danach sollte es so aussehen:

2021-02-07 15-46-37.png

 

Das Python-Tool | Bibliotheken installieren

In der Anleitung von PyPi steht bzgl. der Installation folgendes:

2021-02-07 15-47-54.png

 

Das können wir auch fast genauso in Alteryx übernehmen, wir müssen lediglich ein Ausrufezeichen davor einfügen und das Skript mit SHIFT+Enter starten.

 

2021-02-07 15-48-53.png

 

Das Python Tool | Code schreiben

Nachdem wir nun die Bibliothek / das Paket installiert haben, können wir anfangen es zu nutzen. In der Anleitung heißt es als nächstes unter Usage:

 

 

 

 

from pushbullet import Pushbullet

pb = Pushbullet(api_key)

 

 

 

 

Dies können wir 1:1 so übernehmen, den API-Key werden wir gleich noch austauschen. Auch den nächsten Schritt können wir einfach kopieren:

 

 

 

 

push = pb.push_note("This is the title", "This is the body")

 

 

 

 

Der Code sollte nun wie folgt aussehen:

 

2021-03-14 17-24-32.png

 

Pushbullet | Das API Token

Was ist eigentlich Pushbullet? Pushbullet ist eine App die es euch ermöglicht u.a. mit Skripten Benachrichtigungen auf verschiedenen Plattformen wie Android zu generieren. Es ist dabei sehr praktisch, dass wir uns auch mit dem Google-Account registrieren können, so sparen wir uns einen weiteren Account. Nachdem wir die App installiert haben und uns angemeldet haben, öffnen wir die Pushbullet Webseite und können unter den Settings ein Access Token generieren:

 

2021-02-07 15-55-25.png

 

Dieses können wir nun in unserem Alteryx Python-Tool in Anführungszeichen einfügen.

 

Wenn wir nun die beiden Code-Blöcke mit SHIFT+Enter erneut ausführen, sollte kurz darauf eine Benachrichtigung auf unserem Handy auftauchen – Geschafft!

 

In Macro umwandeln und verfeiern

Nach unserem gelungenen Testlauf können wir nun an den Feinheiten arbeiten und unser Macro verfeinern. Als erstes können wir dabei unser Text-Input Tool mit einem Rechtsklick in ein Macro-Input Tool umwandeln. Ich wähle hier gerne die Option „Optionale Input Connection“, da wir diese in unserem Fall gar nicht benötigen.

 

Im zweiten Schritt wollen wir dann unsere statischen Informationen wie Titel, Nachrichtentext und API-Token dynamisch machen, damit wir diese nicht immer gleich sind, sondern vom Nutzer selbst gewählt werden können. Dazu brauchen wir drei Text-Boxen und drei Action Tools. Tipp: Verbindet man eine Text-Box mit dem Python Tool wird automatisch ein Action Tool eingefügt:

 

2021-02-07 15-59-09.png

 

Bevor wir die Action-Tools konfigurieren, sollten wir noch unser Python-Tool auf den Production-Modus umstellen, dies sorgt dafür, dass die interaktive Oberfläche nicht jedes Mal geladen wird. Diese hilft zwar beim Bauen, aber sobald unser Code final ist, brauchen wir diese nicht mehr. Wir können dies mit dem Switch im oben-rechten Eck machen:

 

2021-02-07 16-02-33.png

 

In den drei Action Tools müssen wir im Folgenden jeweils konfigurieren welche Information ausgetauscht werden soll. Wichtig sind dabei lediglich zwei Aspekte:

  • productionModeScript – value anwählen
  • „Replace a specific string“ auswählen und nur den Text verbleiben lassen welchen wir austauschen wollen. Im Falle des Titels wäre das „Alteryx Dallas UG“

 

2021-02-07 16-01-30.png

 

Nachdem wir das für alle drei Bereiche gemacht haben, sind wir fertig. Wenn wir wollen können wir noch ein Icon festlegen und schon haben wir ein unser Handy-Benachrichtigungstool fertig!

 

Spoiler
Tip: Es ist Best-Practice die variablen Texte vor dem Austauschen mit den Action-Tools zu verallgemeinern:
2021-03-07 21-12-46.png

 

 

Das Ergebnis

2021-02-07 16-07-32.png

 

Da ich das Tool nur für mich selbst nutze, habe ich noch zusätzlich das Token als Default-Wert eingetragen, so dass ich dies nicht jedes Mal konfigurieren muss.

 

Bei langlaufenden Workflows haben wir nun die Option uns mit unserem eigenen Python-Macro benachrichtigen zu lassen, wenn diese fertig sind.

 

Abschließende Gedanken

Im Vergleich zu einigen der anderen Möglichkeiten Benachrichtigungen zu verschicken/generieren, hat man bei Pushbullet nur 100 kostenlose Nahrichten pro Monat – was in meinem Fall aber vollkommen ausreicht. Die Erstellung von Python Macros für Pushsaver und Notify_Run sind ähnlich simpel und letzteres habe ich bei mir ebenfalls eingerichtet.

 

Es ist ebenso möglich das Macro so zu bauen, dass dieses auf Datenzeilen des Alteryx-Workflows reagiert. Der einfachste Weg für Nicht-Coder ist hierbei jedoch einfach ein Batch-Macro drumherum zu bauen und die Felder damit zu befüllen.

 

"Und was wenn ich keine Bibliotheken installieren kann?" - Kein Problem! Mit dem Code aus der Spoiler-Box geht es ebenso!

Spoiler
Wenn du magst, kannst du das Error-Handling auch entfernen oder verbessern - aber du musst es nicht.

Wenn du meinen vorherigen Tip gefolgt bist, dann kannst du auch alle Action Tools unverändert lassen:

#################################
import requests
import json
def pushbullet_message(title, body):
    msg = {"type": "note", "title": title, "body": body}
    TOKEN = '__token__'
    resp = requests.post('https://api.pushbullet.com/v2/pushes', 
                         data=json.dumps(msg),
                         headers={'Authorization': 'Bearer ' + TOKEN,
                                  'Content-Type': 'application/json'})
    if resp.status_code != 200:
        raise Exception('Error',resp.status_code)
    else:
        print ('Message sent') 

#################################
pushbullet_message("__title__","__message__")

Source: medium

Autor: Alexander Groß

Bei Fragen könnt ihr mich gerne hier in der Community oder auf LinkedIn kontaktieren.

Beschriftungen