Python-scripts in uw flow gebruiken
Vrijwaring: dit onderwerp bevat informatie over een product van derden. Hoewel we er alles aan doen om verwijzingen naar de inhoud van derden accuraat te houden, kan de informatie die we hier verstrekken zonder voorafgaande kennisgeving veranderen als Python verandert. Raadpleeg voor de meest recente informatie de Python-documentatie en -ondersteuning.
Python is een veelgebruikte programmeertaal op hoog niveau voor algemene programmering. Als u Python-opdrachten naar een externe service stuurt via Tableau Prep Builder, kunt u uw opties voor datavoorbereiding eenvoudig uitbreiden door acties uit te voeren zoals het toevoegen van rijnummers, het rangschikken van velden, het invullen van velden en het uitvoeren van andere opschoonwerkzaamheden die u anders zou uitvoeren met behulp van berekende velden.
Om Python-scripts in uw flow op te nemen, moet u een verbinding tussen Tableau en een TabPy-server configureren. Vervolgens kunt u Python-scripts gebruiken om ondersteunde functies toe te passen op data uit uw flow met behulp van een pandas-dataframe. Wanneer u een scriptstap aan uw flow toevoegt en opgeeft welke configuratiegegevens, welk bestand en welke functie u wilt gebruiken, worden de data veilig doorgegeven aan de TabPy-server, worden de expressies in het script toegepast en worden de resultaten geretourneerd als een tabel die u naar behoefte kunt opschonen of uitvoeren.
U kunt flows met scriptstappen uitvoeren in Tableau Server, zolang u een verbinding met uw TabPy-server hebt geconfigureerd. Het uitvoeren van flows met scriptstappen wordt momenteel niet ondersteund in Tableau Cloud. Zie De Tableau Python-server (TabPy) voor Tableau Server configureren voor informatie over het configureren van Tableau Server.
Zie Verbindingen met analyse-uitbreidingen configureren voor informatie over het configureren van sites op Tableau Server met analyse-uitbreidingen voor werkmappen.
Vereisten
Voer de volgende stappen uit om Python-scripts in uw flow op te nemen. Het maken of uitvoeren van flows met scriptstappen wordt momenteel niet ondersteund in Tableau Cloud.
Download en installeer Python(Link wordt in een nieuw venster geopend). Download en installeer de meest recente versie van Python voor Linux, Mac of Windows.
Download en installeer TabPy(Link wordt in een nieuw venster geopend) (de Tableau Python-server). Volg de installatie- en configuratie-instructies voor het installeren van TabPy. Tableau Prep Builder gebruikt TabPy om data uit uw flow via TabPy door te geven als invoer, past uw script toe en stuurt de resultaten vervolgens terug naar de flow.
- Installeer Pandas. Voer
pip3 install pandas
uit. Voor integratie met Tableau Prep Builder moet u een pandas-dataframe in uw scripts gebruiken.
De Tableau Python-server (TabPy) voor Tableau Server configureren
Als u in Tableau Server flows met scriptstappen wilt publiceren, maken, bewerken en uitvoeren, moet u een verbinding configureren tussen uw TabPy-server en Tableau Server.
- Versie 2019.3 en later: u kunt gepubliceerde flows met scriptstappen uitvoeren in Tableau Server.
- Versie 2020.4.1 en later: u kunt flows met scriptstappen maken, bewerken en uitvoeren in Tableau Server.
- Tableau Cloud: het maken of uitvoeren van flows met scriptstappen wordt momenteel niet ondersteund.
- Open de TSM-opdrachtregel/-shell.
Voer de volgende opdrachten in om het hostadres, de poortwaarden en de verbindingstime-out in te stellen:
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>
- Selecteer
{maestro-tabpy-secure}
om een beveiligde verbinding in te schakelen of{maestro-tabpy}
om een onbeveiligde verbinding in te schakelen. - Als u
{maestro-tabpy-secure}
selecteert, geeft u het certificaatbestand-cf<certificate file path>
op in de opdrachtregel. - Geef het aantal milliseconden voor
--tabpy-connect-timeout-ms <TabPy connect timeout>
op. Bijvoorbeeld--tabpy-connect-timeout-ms 900000
.
- Selecteer
Om de TabPy-verbinding uit te schakelen, voert u de volgende opdracht in:
tsm security maestro-tabpy-ssl disable
Uw Python-script maken
Voeg bij het maken van uw script een functie toe die een pd.DataFrame (pandas-dataframe) specificeert als argument van de functie. Hierdoor worden uw data opgeroepen uit Tableau Prep Builder. U moet de resultaten ook retourneren in een pd.DataFrame (pandas-dataframe) met behulp van ondersteunde datatypen.
Om codering toe te voegen aan een set velden in een flow, kunt u bijvoorbeeld het volgende script schrijven:
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']), })
De volgende datatypen worden ondersteund:
Datatype in Tableau Prep Builder | Datatype in Python |
---|---|
Tekenreeks | Standaard UTF-8-tekenreeks |
Decimaal | Dubbel |
Geh.getal | Geheel getal |
Booleaans | Booleaanse waarde |
Datum | Tekenreeks in ISO_DATE-notatie 'JJJJ-MM-DD' met optionele zone-offset. Bijvoorbeeld: '2011-12-03' is een geldige datum. |
DatumTijd | Tekenreeks in ISO_DATE_TIME-notatie 'JJJJ-MM-DDT:UU:mm:ss' met optionele zone-offset. Bijvoorbeeld: '2011-12-03T10:15:30+01:00' is een geldige datum. |
Opmerking: Datum en DatumTijd moeten altijd als een geldige tekenreeks worden geretourneerd.
Als u andere velden wilt retourneren dan de velden die u invoert, moet u een get_output_schema-functie in uw script opnemen, die de uitvoer en de datatypen definieert. Anders worden in de uitvoer de velden uit de invoerdata gebruikt. Deze zijn afkomstig uit de stap die voorafgaat aan de scriptstap in de flow.
Gebruik de volgende syntaxis bij het opgeven van de datatypen voor uw velden in get_output_schema:
Functie in Python | Resulterend datatype |
---|---|
prep_string() | Tekenreeks |
prep_decimal() | Decimaal |
prep_int() | Geheel getal |
prep_bool() | Booleaanse waarde |
prep_date() | Datum |
prep_datetime() | DatumTijd |
U kunt vierkante haken gebruiken om toegang te krijgen tot rijen in een dataframe. Enkele haken leveren een Pandas Series op, terwijl dubbele haken een Pandas-dataframe opleveren.
def create_key(df): return pd.DataFrame({ "Key": ['12345'] })
Het volgende voorbeeld toont de functie get_output_schema die is toegevoegd aan het Python-script voor veldcodering:
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() })
Verbinding maken met uw Tableau Python-server (TabPy)
Belangrijk: met ingang van Tableau Prep Builder versie 2020.3.3 kunt u uw serververbinding eenmaal configureren vanuit het bovenste Help-menu in plaats van uw verbinding per flow in te stellen in de Script-stap door op Verbinding maken met Tableau Python-server (TabPy) te klikken en uw verbindingsgegevens in te voeren. U moet uw verbinding met dit nieuwe menu opnieuw configureren voor alle flows die zijn gemaakt in een oudere versie van Tableau Prep Builder, wanneer u ze opent in versie 2020.3.3.
- Selecteer Help > Instellingen en prestaties > Verbindingen van analyse-uitbreiding beheren.
Selecteer Tableau Python-server (TabPy) in de vervolgkeuzelijst Selecteer een Analytics-extensie.
- Voer uw referenties in:
- Poort 9004 is de standaardpoort voor TabPy.
- Als de server om referenties vraagt, voer dan een gebruikersnaam en wachtwoord in.
Als de server SSL-codering gebruikt, schakelt u het selectievakje 'SSL vereisen' in en klikt u vervolgens op de link Geen aangepast configuratiebestand opgegeven om een certificaat voor de verbinding te selecteren. Dit is het certificaatbestand van uw SSL-server.
Opmerking: Tableau Prep Builder biedt geen mogelijkheid om de verbinding te testen. Als er een probleem met de verbinding is, verschijnt er een foutmelding.
Een script toevoegen aan uw flow
Start uw TabPy-server en voer de volgende stappen uit:
Opmerking: TabPy vereist Tornado-pakket versie 5.1.1 om te kunnen draaien. Als bij het starten van TabPy een foutmelding verschijnt waarin wordt meegedeeld dat 'tornado.web' niet het kenmerk 'asynchronous' heeft, voert u pip list
uit via de opdrachtregel om te controleren welke versie van Tornado is geïnstalleerd. Als een andere versie is geïnstalleerd, download dan het Tornado-pakket versie 5.1.1(Link wordt in een nieuw venster geopend). Voer vervolgens pip uninstall tornado
uit om uw huidige versie te verwijderen, gevolgd door pip install tornado==5.1.1
om de vereiste versie te installeren.
Open Tableau Prep Builder en klik op de knop Verbinding toevoegen .
Ga in webauthoring naar de Startpagina en klik op Maken > Flow, of ga naar de pagina Verkennen en klik op Nieuw > Flow. Klik vervolgens op Verbinding maken met data.
Selecteer in de lijst met connectors het bestandstype of de server waarop uw data worden gehost. Voer indien gevraagd de gegevens in die nodig zijn om u aan te melden en toegang te krijgen tot uw data.
Klik op het pluspictogram en selecteer Script toevoegen in het contextmenu.
Selecteer in de sectie Verbindingstype van het deelvenster Script de optie Tableau Python-server (TabPy).
- Klik in de sectie Bestandsnaam op Bladeren om uw scriptbestand te selecteren.
Voer de Functienaam in en druk op Enter om uw script uit te voeren.