Usare gli script Python nel flusso

Dichiarazione di non responsabilità: questa sezione include informazioni su un prodotto di terze parti. Tieni presente che, sebbene sia in atto ogni sforzo per mantenere accurati i riferimenti a contenuti di terze parti, le informazioni qui fornite potrebbero subire variazioni senza preavviso in quanto Python è soggetto a modifiche. Per le informazioni più aggiornate, consulta la documentazione e l’assistenza di Python.

Python è un linguaggio di programmazione di alto livello ampiamente utilizzato per la programmazione generica. Inviando comandi Python a un servizio esterno tramite Tableau Prep Builder, puoi estendere facilmente le opzioni di preparazione dei dati eseguendo azioni come l’aggiunta di numeri di riga, la classificazione e la compilazione dei campi e l’esecuzione di altre operazioni di pulizia che altrimenti potresti svolgere utilizzando i campi calcolati.

Per includere script Python nel flusso, è necessario configurare una connessione tra Tableau e un server TabPy. A questo punto è possibile utilizzare gli script Python per applicare le funzioni supportate ai dati del flusso utilizzando un frame di dati pandas. Quando aggiungi una fase di script al flusso e specifichi i dettagli di configurazione, il file e la funzione che desideri utilizzare, i dati vengono passati in modo sicuro al server TabPy, le espressioni nello script vengono applicate e i risultati vengono restituiti sotto forma di tabella che è possibile pulire o generare come output in base alle tue esigenze.

Puoi eseguire flussi che includono passaggi di script in Tableau Server purché sia stata configurata una connessione al server TabPy. L’esecuzione di flussi con passaggi di script in Tableau Cloud non è attualmente supportata. Per configurare Tableau Server, consulta Configurare il server Tableau Python (TabPy) per Tableau Server.

Per informazioni su come configurare i siti su Tableau Server con le estensioni di analisi per le cartelle di lavoro, consulta Configurare le connessioni con le estensioni di analisi.

Prerequisiti

Per includere gli script Python nel flusso, completa la configurazione indicata di seguito. La creazione o l’esecuzione di flussi con passaggi di script in Tableau Cloud non è attualmente supportata.

  1. Scarica e installa Python(Il collegamento viene aperto in una nuova finestra). Scarica e installa la versione più recente di Python per Linux, Mac o Windows.

  2. Scarica e installa il server Tableau Python (TabPy(Il collegamento viene aperto in una nuova finestra)). Segui le istruzioni di installazione e configurazione per l’installazione di TabPy. Tableau Prep Builder utilizza TabPy per passare i dati dal flusso attraverso TabPy come input, applica lo script, quindi restituisce i risultati al flusso.

  3. Installa Pandas. Esegui pip3 install pandas. Per l’integrazione con Tableau Prep Builder, è necessario utilizzare un frame di dati Pandas negli script.

Configurare il server Tableau Python (TabPy) per Tableau Server

Se prevedi di pubblicare, creare, modificare ed eseguire flussi che includono fasi di script in Tableau Server, dovrai configurare una connessione tra il tuo server TabPy e Tableau Server.

  • Versione 2019.3 e successive: puoi eseguire flussi pubblicati che includono passaggi di script in Tableau Server.
  • Versione 2020.4.1 e successive: puoi creare, modificare ed eseguire flussi che includono passaggi di script in Tableau Server.
  • Tableau Cloud: la creazione o l’esecuzione di flussi con passaggi di script non è attualmente supportata.
  1. Apri la riga di comando/shell TSM.
  2. Immetti i seguenti comandi per impostare l’indirizzo host, i valori delle porte e il timeout di connessione:

    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>

    • Seleziona {maestro-tabpy-secure} per abilitare una connessione protetta o {maestro-tabpy} per abilitare una connessione non protetta.
    • Se selezioni {maestro-tabpy-secure}, specifica il file del certificato -cf<certificate file path> nella riga di comando.
    • Specifica --tabpy-connect-timeout-ms <TabPy connect timeout> in millisecondi. Ad esempio, --tabpy-connect-timeout-ms 900000.
  3. Per disabilitare la connessione a TabPy, immetti il seguente comando:

    tsm security maestro-tabpy-ssl disable

Creare lo script Python

Quando crei lo script, includi una funzione che specifichi un pandas (pd.DataFrame) come argomento della funzione. Quest’operazione consentirà di chiamare i dati da Tableau Prep Builder. Oltre a ciò, sarà necessario restituire i risultati in un pandas (pd.DataFrame) utilizzando i tipi di dati supportati.

Ad esempio, per aggiungere la codifica a un insieme di campi in un flusso, puoi scrivere lo script indicato di seguito:

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']),
})

Sono supportati i seguenti tipi di dati:

Tipo di dati in Tableau Prep BuilderTipo di dati in Python
StringaStringa UTF-8 standard
DecimaleDoppio
IntIntero
BoolBooleano
DataStringa in formato ISO_DATE "YYYY-MM-DD" con differenza fuso orario opzionale. Ad esempio, "2011-12-03" rappresenta una data valida.
Data e oraStringa in formato ISO_DATE_TIME "YYYY-MM-DDT:HH:mm:ss" con differenza fuso orario opzionale. Ad esempio, "2011-12-03T10:15:30+01:00" rappresenta una data valida.

Nota: i valori Data e Data e ora devono sempre essere restituiti come stringa valida.

Se desideri che vengano restituiti campi diversi da quelli inseriti, è necessario includere nello script una funzione get_output_schema che definisca l’output e i tipi di dati. In caso contrario l’output utilizzerà i campi dei dati di input, acquisiti dal passaggio precedente alla fase di script nel flusso.

Quando specifichi i tipi di dati per i campi nella funzione get_output_schema, utilizza la seguente sintassi:

Funzione in PythonTipo di dati risultante
prep_string()Stringa
prep_decimal()Decimale
prep_int()Intero
prep_bool()Booleano
prep_date()Data
prep_datetime()Data e ora

È possibile utilizzare le parentesi quadre per accedere alle righe da un oggetto DataFrame. Con le parentesi singole viene generato un oggetto Pandas Series, mentre con una parentesi doppia si ottiene un oggetto Pandas DataFrame.

def create_key(df):
return pd.DataFrame({
"Key": ['12345']
})

L’esempio seguente mostra la funzione get_output_schema aggiunta al campo di codifica dello script Python:

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()
})

Connettersi al server Tableau Python (TabPy)

Importante: a partire dalla versione 2020.3.3 di Tableau Prep Builder, puoi configurare la connessione al server una sola volta dal menu Guida superiore anziché impostare la connessione per ogni flusso nel passaggio di script facendo clic su Connettiti al server Tableau Python (TabPy) e immettendo i dettagli della connessione. Sarà necessario riconfigurare la connessione utilizzando questo nuovo menu per tutti i flussi creati in una versione precedente di Tableau Prep Builder aperti nella versione 2020.3.3.

  1. Seleziona Guida > Impostazioni e prestazioni > Gestisci connessione estensione di analisi.
  2. Nell’elenco a discesa Seleziona un’estensione di analisi seleziona Server Tableau Python (TabPy).

  3. Inserisci le credenziali:
    • La porta 9004 è la porta predefinita per TabPy.
    • Se il server richiede delle credenziali, immetti un nome utente e una password.
    • Se il server utilizza la crittografia SSL, seleziona la casella di controllo Richiedi SSL, quindi fai clic su Nessun file di configurazione personalizzato specificato... per selezionare un certificato per la connessione. Questo è il file certificato del server SSL.

      Nota: Tableau Prep Builder non fornisce un metodo per eseguire test della connessione. In caso di problemi con la connessione, viene visualizzato un messaggio di errore.

Aggiungere uno script al flusso

Avvia il server TabPy e completa le seguenti operazioni:

Nota: per eseguire TabPy è necessario il pacchetto tornado versione 5.1.1. Se ricevi l’errore 'tornado.web' has no attribute 'asynchronous' ('tornado.web' non presenta l’attributo 'asynchronous') quando tenti di avviare TabPy, esegui pip list dalla riga di comando per controllare la versione di tornado installata. Se la versione installata è diversa, scarica il pacchetto tornado versione 5.1.1(Il collegamento viene aperto in una nuova finestra). A questo punto, esegui pip uninstall tornado per disinstallare la versione corrente, quindi esegui pip install tornado==5.1.1 per installare la versione richiesta.

  1. Apri Tableau Prep Builder e fai clic sul pulsante Aggiungi connessione.

    In Web authoring, nella pagina Home fai clic su Crea > Flusso oppure nella pagina Esplora fai clic su Nuovo > Flusso. Fai clic su Connetti ai dati.

  2. Dall’elenco dei connettori, seleziona il tipo di file o il server che ospita i tuoi dati. Se ti viene richiesto, inserisci le informazioni necessarie per accedere ai dati.

  3. Fai clic sull’icona del segno più e seleziona Aggiungi script dal menu di scelta rapida.

  4. Nel riquadro Script, nella sezione Tipo di connessione, seleziona Server Tableau Python (TabPy).

  5. Nella sezione Nome file, fai clic su Sfoglia per selezionare il file di script.
  6. Immetti il Nome della funzione, quindi premi Invio per eseguire lo script.

Grazie per il tuo feedback.Il tuo feedback è stato inviato. Grazie!