Använda Python-skript i ditt flöde
Ansvarsfriskrivning: Det här avsnittet innehåller information om en produkt från tredje part. Observera att även om vi gör allt vi kan för att se till att referenser till innehåll från tredje part är korrekta, kan den information vi tillhandahåller här ändras utan föregående meddelande när python ändras. För den senaste informationen, vänligen se python-dokumentation och support.
Python är ett populärt högnivåspråk med många tillämpningsområden. Genom att skicka Python-kommandon till en extern tjänst via Tableau Prep Builder kan du enkelt utöka dina alternativ för dataförberedelse genom att utföra åtgärder som att lägga till radnummer, rangordna fält, fylla i fält och utföra andra rengöringsåtgärder som du annars kan göra med hjälp av beräknade fält.
För att inkludera Python-skript i flödet måste du konfigurera en anslutning mellan Tableau och en TabPy-server. Sedan kan du använda Python-skript för att tillämpa funktioner som stöds på data från ditt flöde med hjälp av en Pandas DataFrame. När du lägger till ett skriptsteg i ditt flöde och anger konfigurationsdetaljer, fil och funktion som du vill använda, skickas data på ett säkert sätt till TabPy-servern, uttrycken i skriptet tillämpas och resultaten returneras som en tabell som du kan rensa eller mata ut efter behov.
Du kan köra flöden som innehåller skriptsteg i Tableau Server så länge du har konfigurerat en anslutning till din TabPy-server. Det finns för närvarande inget stöd för att köra flöden med skriptsteg i Tableau Cloud. För att konfigurera Tableau Server, se Konfigurera Tableau Python-servern (TabPy) för Tableau Server.
Information om hur du konfigurerar platser på Tableau Server med analystillägg för arbetsböcker finns i Konfigurera anslutningar med Analytics-tillägg.
Förutsättningar
För att inkludera Python-skript i ditt flöde, gör följande inställning. Det finns för närvarande inget stöd för att skapa eller köra flöden med skriptsteg i Tableau Cloud.
Ladda ner och installera Python(Länken öppnas i ett nytt fönster). Ladda ner och installera den senaste versionen av Python för Linux, Mac eller Windows.
Ladda ner och installera Tableau Python-servern (TabPy(Länken öppnas i ett nytt fönster)). Följ installations- och konfigurationsinstruktionerna för installation av TabPy. Tableau Prep Builder använder TabPy för att skicka data från ditt flöde genom TabPy som inmatning, tillämpar ditt skript och returnerar sedan resultaten till flödet.
- Installera Pandas. Kör
pip3 install pandas
. Du måste använda en Pandas DataFrame i skripten för att integrera med Tableau Prep Builder.
Konfigurera Tableau Python-servern (TabPy) för Tableau Server
Om du planerar att publicera, skapa, redigera och köra flöden som innehåller skriptsteg i Tableau Server, måste du konfigurera en anslutning mellan din TabPy-server och Tableau Server.
- Version 2019.3 och senare: Du kan köra publicerade flöden som inkluderar skriptsteg i Tableau Server.
- Version 2020.4.1 och senare: Du kan skapa, redigera och köra publicerade flöden som inkluderar skriptsteg i Tableau Server.
- Tableau Cloud: Det finns för närvarande inget stöd för att skapa och köra flöden med skriptsteg.
- Öppna TSM-kommandoraden/skalet.
Ange följande kommandon för att ställa in värdadress, portvärden och tidsgräns för anslutning:
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>
- Välj
{maestro-tabpy-secure}
för att upprätta en säker anslutning eller{maestro-tabpy}
för att upprätta en oskyddad anslutning. - Om du väljer
{maestro-tabpy-secure}
måste du specificera certifikatfilen-cf<certificate file path>
på kommandoraden. - Specificera
--tabpy-connect-timeout-ms <TabPy connect timeout>
i millisekunder. Till exempel--tabpy-connect-timeout-ms 900000
.
- Välj
Om du vill inaktivera TabPy-anslutningen anger du följande kommando
tsm security maestro-tabpy-ssl disable
Skapa ditt python-skript
När du skapar skriptet inkluderar du en funktion som anger en Pandas (pd.DataFrame) som ett argument för funktionen. Detta anropar data från Tableau Prep Builder. Du måste också returnera resultaten i en Pandas (pd.DataFrame) med hjälp av datatyper som stöds.
Om du till exempel vill lägga till kodning till en uppsättning fält i ett flöde kan du skriva följande skript:
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']), })
Följande datatyper stöds:
Datatyp i Tableau Prep Builder | Datatyp i Python |
---|---|
Sträng | UTF-8-standardsträng |
Decimal | Dubbel |
Int | Heltal |
Bool | Booleskt |
Datum | Sträng i ISO_DATE-formatet ”ÅÅÅÅ-MM-DD” med valfri zonförskjutning. Exempelvis är ”2011-12-03” ett giltigt datum. |
DateTime | Sträng i ISO_DATE_TIME-formatet ”ÅÅÅÅ-MM-DDT:HH:mm:ss” med valfri zonförskjutning. Exempelvis är ”2011-12-03T10:15:30+01:00” ett giltigt datum. |
Obs! Date och DateTime måste alltid returneras som en giltig sträng.
Om du vill returnera andra fält än vad du anger i indata måste du inkludera en get_output_schema-funktion i skriptet som definierar utdata och datatyper. I annat fall använder utdata fälten från indata, vilka hämtas från steget före skriptsteget i flödet.
Använd följande syntax när du anger datatyperna för dina fält i get_output_schema:
Funktion i Python | Resulterande datatyp |
---|---|
prep_string() | Sträng |
prep_decimal() | Decimal |
prep_int() | Heltal |
prep_bool() | Booleskt |
prep_date() | Datum |
prep_datetime() | DateTime |
Hakparenteser kan användas för att komma åt rader från en DataFrame. Enkla parenteser matar ut en Pandas Series, medan en dubbel parentes matar ut en Pandas DataFrame.
def create_key(df): return pd.DataFrame({ "Key": ['12345'] })
Följande exempel visar funktionen get_output_schema som läggs till i det fältkodande python-skriptet:
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() })
Anslut till din Tableau Python-server (TabPy)
Viktigt: Från och med Tableau Prep Builder version 2020.3.3 kan du konfigurera din serveranslutning en gång från den övre hjälpmenyn istället för att ställa in din anslutning per flöde i skriptsteget genom att klicka på Anslut till Tableau Python (TabPy) Server och ange dina anslutningsuppgifter. Du måste konfigurera om anslutningen med hjälp av den här nya menyn för alla de flöden som har skapats i en äldre version av Tableau Prep Builder som du öppnar i version 2020.3.3.
- Välj Hjälp > Inställningar och prestanda > Hantera anslutningen till analystillägg.
I rullistan Välj ett Analytics-tillägg, välj Tableau Python (TabPy) Server.
- Ange dina inloggningsuppgifter:
- Port 9004 är standardport för TabPy.
- Om servern kräver inloggningsuppgifter anger du ett användarnamn och lösenord.
Om servern använder SSL-kryptering, markera kryssrutan Kräv SSL, klicka sedan på länken Ingen anpassad konfigurationsfil angiven... för att välja ett certifikat för anslutningen. Det här är din certifikatfil för SSL-servern.
Obs! Tableau Prep Builder tillhandahåller inte något sätt att testa anslutningen på. Om det är problem med anslutningen visas ett felmeddelande.
Lägg till ett skript i flödet
Starta din TabPy-server och utför sedan följande steg:
Obs! TabPy kräver tornadopaketversion 5.1.1 för att köras. Om du får felet ”tornado.web” har inget attribut ”asynkront” när du försöker starta TabPy, från kommandoraden kör pip list
för att kontrollera den version av tornado som installerades. Om du har en annan version installerad, ladda ner tornadopaket version 5.1.1(Länken öppnas i ett nytt fönster). Kör sedan pip uninstall tornado
för att avinstallera din nuvarande version, och kör sedan pip install tornado==5.1.1
för att installera den nödvändiga versionen.
Öppna Tableau Prep Builder och klicka på knappen Lägg till anslutning .
Klicka på Skapa > Flöde på sidan Start vid webbredigering, eller klicka på Nytt > Flöde på sidan Utforska. Klicka sedan på Anslut till data.
Välj den filtyp eller server som är värd för dina data i listan med kopplingar. Ange den information som behövs för att logga in och få åtkomst till dina data om du uppmanas till detta.
Klicka på plusikonen och välj Lägg till skript på kontextmenyn.
Välj Tableau Python (TabPy) Serveri rutan Skript i avsnittet Anslutningstyp .
- Välj skriptfil genom att klicka på Bläddra i avsnittet Filnamn.
Ange Funktionsnamn och kör skriptet genom att trycka på Retur.