Python-Skripte im Schema verwenden

Haftungsausschluss: Dieses Thema enthält Informationen über ein Drittanbieterprodukt. Bitte beachten Sie, dass wir zwar große Anstrengungen unternehmen, die Verweise auf Inhalte Dritter korrekt zu halten, sich die von uns hier zur Verfügung gestellten Informationen jedoch ohne Vorankündigung ändern können, wenn sich Python ändert. Die aktuellsten Informationen finden Sie in der Dokumentation und im Support von Python.

Python ist eine weit verbreitete High-Level-Programmiersprache für die allgemeine Programmierung. Wenn Sie Python-Befehle durch Tableau Prep Builder an einen externen Dienst senden, können Sie Ihre Datenaufbereitungsoptionen einfach erweitern, indem Sie Aktionen wie das Hinzufügen von Zeilennummern, das Ranking von Feldern, das Ausfüllen von Feldern und andere Reinigungsvorgänge durchführen, die Sie sonst vielleicht mit berechneten Feldern durchführen.

Um Python-Skripte in Ihr Schema aufzunehmen, müssen Sie eine Verbindung zwischen Tableau und einem TabPy-Server konfigurieren. Anschließend können Sie Python-Skripte verwenden, um unterstützte Funktionen auf Daten aus Ihrem Schema mit einem Pandas-Datenrahmen anzuwenden. Wenn Sie einen Skriptschritt zu ihrem Schema hinzugeben und die Konfigurationsdetails, die Datei und die Funktion angeben, die Sie verwenden möchten, werden die Daten sicher an den TabPy-Server übergeben, die Ausdrücke im Skript werden angewendet und die Ergebnisse werden als Tabelle zurückgegeben, die Sie nach Bedarf bereinigen oder ausgeben können.

Sie können Schemata ausführen, die Skriptschritte in Tableau Server enthalten, solange Sie eine Verbindung zu Ihrem TabPy-Server konfiguriert haben. Die Ausführung von Schemata mit Skriptschritten in Tableau Online wird derzeit nicht unterstützt. Informationen zum Konfigurieren von Tableau Server finden Sie unter Den Tableau Python (TabPy) Server für Tableau Server konfigurieren.

Voraussetzungen

Führen Sie das folgende Setup durch, um Python-Skripte in Ihr Schema einzubinden. Die Erstellung oder Ausführung von Schemata mit Skriptschritten in Tableau Online wird derzeit nicht unterstützt.

  1. Laden Sie Python(Link wird in neuem Fenster geöffnet)herunter und installieren Sie es. Laden Sie die aktuellste Version von Python für Linux, Mac oder Windows herunter und installieren Sie sie.

  2. Laden Sie den Tableau Python-Server (TabPy(Link wird in neuem Fenster geöffnet)) herunter und installieren Sie ihn. Befolgen Sie die Installations- und Konfigurationsanweisungen für die Installation von TabPy. Tableau Prep Builder verwendet TabPy, um Daten aus Ihrem Schema durch TabPy als Eingabe zu übergeben, wendet Ihr Skript an und gibt die Ergebnisse dann an das Schema zurück.

  3. Pandas installieren. Ausführen pip3 install pandas. Sie müssen einen Pandas-Datenrahmen in Ihren Skripten verwenden, um es mit Tableau Prep Builder zu integrieren.

Den Tableau Python (TabPy) Server für Tableau Server konfigurieren

Wenn Sie Schemata mit Skriptschritten in Tableau Server veröffentlichen, erstellen, bearbeiten und ausführen möchten, müssen Sie eine Verbindung zwischen Ihrem TabPy-Server und Tableau Server konfigurieren.

  • Version 2019.3 und höher: Sie können veröffentlichte Schemata ausführen, die Skriptschritte in Tableau Server enthalten.
  • Version 2020.4.1 und höher: Sie können Schemata erstellen, bearbeiten und ausführen, die Skriptschritte in Tableau Server enthalten.
  • Tableau Online: Das Erstellen oder Ausführen von Schemata mit Skriptschritten wird derzeit nicht unterstützt.
  1. Öffnen Sie die TSM-Befehlszeile/Shell.
  2. Geben Sie die folgenden Befehle ein, um die Hostadresse, die Portwerte und die Verbindungszeitüberschreitung festzulegen:

    tsm security maestro-tabpy-ssl enable --connection-type {maestro-tabpy-secure/maestro-tabpy} --tabpy-host <TabPy IP address or host name> --tabpy-port <TabPy port> --tabpy-username <TabPy username> --tabpy-password <TabPy password> --tabpy-connect-timeout-ms <TabPy connect timeout>

    • Wählen Sie {maestro-tabpy-secure} um eine sichere Verbindung, oder {maestro-tabpy} um eine ungesicherte Verbindung zu aktivieren.
    • Wenn Sie {maestro-tabpy-secure} auswählen, geben Sie in der Befehlszeile die Zertifikatsdatei -cf<certificate file path> an.
    • Geben Sie --tabpy-connect-timeout-ms <TabPy connect timeout> in Millisekunden ein. Zum Beispiel --tabpy-connect-timeout-ms 900000.
  3. Um die TabPy-Verbindung zu deaktivieren, geben Sie folgenden Befehl ein

    tsm security maestro-tabpy-ssl disable

Python-Skript erstellen

Wenn Sie Ihr Skript erstellen, binden Sie eine Funktion ein, die ein Pandas (pd.DataFrame) als Argument der Funktion angibt. Dadurch werden Ihre Daten von Tableau Prep Builder abgerufen. Sie müssen die Ergebnisse auch in ein Pandas (pd.DataFrame) mit unterstützten Datentypen zurückgeben.

Um beispielsweise einer Reihe von Feldern in einem Schema eine Kodierung hinzuzufügen, können Sie das folgende Skript schreiben:

def encode(input):     
  le = preprocessing.LabelEncoder()
  Return pd.DataFrame({
    'Opportunity Number' : input['Opportunity Number'],
    'Supplies Subgroup Encoded' : le.fit_transform(input['Supplies Subgroup']),
    'Region Encoded' : le.fit_transform(input['Region']),
    'Route To Market Encoded' : le.fit_transform(input['Route To Market']),
    'Opportunity Result Encoded' : le.fit_transform(input['Opportunity Result']),
    'Competitor Type Encoded' : le.fit_transform(input['Competitor Type']),
    'Supplies Group Encoded' : le.fit_transform(input['Supplies Group']),
})

Die folgenden Datentypen werden unterstützt:

Datentyp im Tableau Prep Builder Datentyp in Python
Zeichenfolge Standardmäßige UTF-8 Zeichenkette
Dezimal Doppelt
Ganz Ganzzahl
Bool Boolsche Zahl
Datum Zeichenkette im ISO_DATE-Format „JJJJ-MM-TT“ mit optionalem Zeitzonenversatz. Beispielsweise ist „2011-12-03“ ein gültiges Datum.
DatumUhrzeit Zeichenkette im ISO_DATE_TIME-Format „JJJJ-MM-TTU:SS:mm:ss" mit optionalem Zeitzonenversatz. Beispielsweise ist "2011-12-03T10:15:30:30+01:00" ein gültiges Datum.

Hinweis: Datum und DatumUhrzeit müssen immer als gültige Zeichenkette zurückgegeben werden.

Wenn Sie andere Felder als die von Ihnen eingegebenen zurückerhalten möchten, muss eine Funktion get_output_schema in das Skript aufgenommen werden, die die Ausgabe und den Datentyp definiert. Andernfalls verwendet die Ausgabe die Felder aus den Eingabedaten, die aus dem Schritt genommen werden, der vor dem Skriptschritt im Schema liegt.

Verwenden Sie die folgende Syntax, wenn Sie die Datentypen für die Felder im get_output_schema angeben:

Funktion in Python Resultierender Datentyp
prep_string () Zeichenfolge
prep_decimal () Dezimal
prep_int () Ganzzahl
prep_bool () Boolsche Zahl
prep_date () Datum
prep_datetime () DatumUhrzeit

Das folgende Beispiel zeigt die Funktion get_output_schema dem Python-Skript zur Feldkodierung hinzugefügt:

def get_output_schema():       
  return pd.DataFrame({
    'Opportunity Number' : prep_int(),
    'Supplies Subgroup Encoded' : prep_int(),
    'Region Encoded' : prep_int(),
    'Route To Market Encoded' : prep_int (),
    'Opportunity Result Encoded' : prep_int (),
    'Competitor Type Encoded' : prep_int()
    'Supplies Group Encoded' : prep_int()
})

Herstellen einer Verbindung mit Ihrem Tableau Python-Server (TabPy)

Wichtig: Ab Tableau Prep Builder-Version 2020.3.3 können Sie die Serververbindung einmal über das obere Hilfe-Menü konfigurieren, statt sie pro Schema im Skriptschritt einzurichten, indem Sie auf Verbinden zu Tableau Python(TabPy)-Server klicken und Ihre Verbindungsdetails eingeben. Sie müssen Ihre Verbindung mithilfe dieses neuen Menüs für alle in einer älteren Version von Tableau Prep Builder erstellten Schemata neu konfigurieren, die Sie in Version 2020.3.3 öffnen.

  1. Wählen Sie Hilfe > Einstellungen und Leistung > Verwalten der Verbindung mit Analytics-Erweiterungen.
  2. Wählen Sie in der Dropdown-Liste Analytics-Erweiterung auswählen die Option Tableau Python (TabPy)-Server aus.

  3. Geben Sie Ihre Anmeldeinformationen ein:
    • Port 9004 ist der voreingestellte Port für TabPy.
    • Wenn der Server Anmeldeinformationen benötigt, geben Sie entsprechend einen Benutzernamen und ein Kennwort ein.
    • Wenn der Server SSL-Verschlüsselung verwendet, aktivieren Sie das Kontrollkästchen SSL erforderlich, und klicken Sie dann auf den Link Benutzerdefinierte Konfigurationsdatei, um ein Zertifikat für die Verbindung anzugeben.

      Hinweis: Tableau Prep Builder bietet keine Möglichkeit, die Verbindung zu testen. Falls es ein Problem mit der Verbindung gibt, wird eine Fehlermeldung angezeigt.

Ein Skript zum Schema hinzufügen

Starten Sie Ihren TabPy-Server und führen Sie dann die folgenden Schritte aus:

Hinweis: TabPy erfordert die Ausführung des Tornado-Pakets Version 5.1.1. Wenn Sie die Fehlermeldung 'tornado.web' hat kein Attribut 'asynchron‘ erhalten, wenn Sie TabPy starten, führen Sie von der Befehlszeile aus pip list aus, um die installierte Version von Tornado zu überprüfen. Wenn Sie eine andere Version installiert haben, laden Sie das Tornado-Paket Version 5.1.1(Link wird in neuem Fenster geöffnet)herunter. Führen Sie dann pip uninstall tornado durch, um Ihre gegenwärtige Version zu deinstallieren, führen Sie dann pip install tornado==5.1.1 aus, um die erforderliche Version zu installieren.

  1. Öffnen Sie Tableau Prep Builder und klicken Sie auf die Schaltfläche Verbindung hinzufügen.

    Klicken Sie bei der Webdokumenterstellung auf der Startseite auf Erstellen > Schema oder auf der Seite Erkunden auf Neu > Schema. Klicken Sie anschließend auf Verbindung zu Daten herstellen.

  2. Wählen Sie in der Connector-Liste den Dateityp oder Server aus, auf dem Ihre Daten gehostet werden. Geben Sie bei entsprechender Aufforderung die zum Anmelden und Zugreifen auf Ihre Daten benötigten Informationen ein.

  3. Klicken Sie auf das Pluszeichen und wählen Sie im Kontextmenü die Option Skript hinzufügen aus.

  4. Wählen Sie im Bereich Skript im Abschnitt Verbindungstyp die Option Tableau Python (TabPy) Server.

  5. Klicken Sie im Abschnitt Dateiname auf Durchsuchen, um Ihre Skriptdatei auszuwählen.
  6. Geben Sie den Funktionsnamen ein und drücken Sie die Eingabetaste, um Ihr Skript auszuführen.

Vielen Dank für Ihr Feedback!