Utiliser des scripts Python dans votre flux

Décharge de responsabilité : cette rubrique inclut des informations sur un produit tiers. Remarque : bien que nous fassions tout notre possible pour que les références au contenu de tiers soient exactes, les informations fournies ici peuvent changer sans préavis à mesure que Python évolue. Pour obtenir les informations les plus à jour, veuillez consulter la documentation et le support Python.

Python est un langage de programmation de haut niveau largement utilisé pour la programmation générale. En envoyant des commandes Python à un service externe via Tableau Prep Builder, vous pouvez facilement étendre vos options de préparation de données en effectuant des actions telles que l’ajout de numéros de lignes, le classement de champs, le remplissage de champs et d’autres opérations de nettoyage que vous pourriez sinon effectuer à l’aide des champs calculés.

Pour inclure des scripts Python dans votre flux, vous devez configurer une connexion entre Tableau et un serveur TabPy. Ensuite, vous pouvez utiliser des scripts Python pour appliquer des fonctions prises en charge aux données de votre flux en utilisant un Pandas Dataframe. Lorsque vous ajoutez une étape de script à votre flux et spécifiez les détails de configuration, le fichier et la fonction que vous souhaitez utiliser, les données sont transmises en toute sécurité au serveur TabPy, les expressions du script sont appliquées et les résultats sont renvoyés sous forme de table que vous pouvez nettoyer ou générer si nécessaire.

Vous pouvez exécuter des flux qui incluent des étapes de script dans Tableau Server tant que vous avez configuré une connexion à votre serveur TabPy. L’exécution de flux avec des étapes de script dans Tableau Cloud n’est pas prise en charge actuellement. Pour configurer Tableau Server, consultez Configurer le serveur Tableau Python (TabPy) pour Tableau Server.

Pour plus d’informations sur la configuration des sites sur Tableau Server avec des extensions analytiques pour les classeurs, consultez Configurer les connexions avec les extensions analytiques.

Conditions préalables

Pour inclure des scripts Python dans votre flux, effectuez la configuration suivante. La création ou l’exécution de flux avec des étapes de script dans Tableau Cloud n’est pas prise en charge actuellement.

  1. Téléchargez et installez Python(Le lien s’ouvre dans une nouvelle fenêtre). Téléchargez et installez la version la plus récente de Python pour Linux, Mac ou Windows.

  2. Téléchargez et installez le serveur Tableau Python (TabPy(Le lien s’ouvre dans une nouvelle fenêtre)). Suivez les instructions d’installation et de configuration pour installer TabPy. Tableau Prep Builder utilise TabPy pour transmettre les données de votre flux via TabPy en entrée, applique votre script, puis renvoie les résultats au flux.

  3. Installez Pandas. Exécutez pip3 install pandas. Vous devez utiliser un Pandas Dataframe dans vos scripts pour l’intégration avec Tableau Prep Builder.

Configurer le serveur Tableau Python (TabPy) pour Tableau Server

Si vous envisagez de publier, créer, modifier et exécuter des flux qui incluent des actions de script dans Tableau Server, vous devrez configurer une connexion entre votre serveur TabPy et Tableau Server.

  • Version 2019.3 et ultérieure : vous pouvez exécuter des flux publiés incluant des étapes de script dans Tableau Server.
  • Version 2020.4.1 et ultérieure : vous pouvez créer, modifier et exécuter des flux incluant des étapes de script dans Tableau Server.
  • Tableau Cloud : la création ou l’exécution de flux avec des étapes de script n’est pas prise en charge actuellement.
  1. Ouvrez la ligne/l’interpréteur de commande TSM.
  2. Entrez les commandes suivantes pour définir l’adresse de l’hôte, les valeurs de port et le délai d’expiration de la connexion :

    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>

    • Sélectionnez {maestro-tabpy-secure} pour activer une connexion sécurisée ou {maestro-tabpy} pour activer une connexion non sécurisée.
    • Si vous sélectionnez {maestro-tabpy-secure}, spécifiez le fichier de certificat -cf<certificate file path> dans la ligne de commande.
    • Spécifiez le paramètre --tabpy-connect-timeout-ms <TabPy connect timeout> en millisecondes. Par exemple --tabpy-connect-timeout-ms 900000.
  3. Pour désactiver la connexion TabPy, entrez la commande suivante

    tsm security maestro-tabpy-ssl disable

Créer votre script python

Lorsque vous créez votre script, incluez une fonction qui spécifie un Pandas Dataframe (pd.DataFrame) comme argument de la fonction. Vos données seront alors appelées à partir de Tableau Prep Builder. Vous devrez également retourner les résultats dans un Pandas Dataframe (pd.DataFrame) en utilisant les types de données pris en charge.

Par exemple, pour ajouter un codage à un ensemble de champs dans un flux, vous pouvez écrire le script suivant :

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

Les types de données suivants sont pris en charge :

Type de données dans Tableau Prep BuilderType de données dans Python
ChaîneChaîne UTF-8 standard
DécimaleDouble
IntEntier
BoolBooléen
DateChaîne au format ISO_DATE « AAAA-MM-JJ » avec décalage de zone optionnel. Par exemple, « 2011-12-03 » est une date valide.
DateTimeChaîne au format ISO_DATE_TIME « YYYYY-MM-DDT:HH:mm:ss » avec décalage de zone en option. Par exemple, « 2011-12-03T10:15:30+01:00 » est une date vslid.

Remarque : Date et DateTime doivent toujours être renvoyés sous la forme d’une chaîne valide.

Pour retourner des champs différents de ceux que vous entrez, vous devrez inclure une fonction get_output_schema dans votre script qui définit les types de sortie et de données. Sinon, la sortie utilisera les champs des données d’entrée qui proviennent de l’étape précédant l’étape de script dans le flux.

Utilisez la syntaxe suivante lorsque vous spécifiez les types de données pour vos champs dans get_output_schema :

Fonction dans PythonType de données résultant
prep_string()Chaîne
prep_decimal()Décimale
prep_int()Entier
prep_bool()Booléen
prep_date()Date
prep_datetime()DateTime

Les crochets peuvent être utilisés pour accéder aux lignes d’un DataFrame. Les crochets simples génèrent un Pandas Series, tandis qu’un crochet double génère un Pandas DataFrame.

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

L’exemple suivant montre la fonction get_output_schema ajoutée au script python de codage des champs :

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

Connexion à votre serveur Tableau Python (TabPy)

Important : depuis Tableau Prep Builder version 2020.3.3, vous pouvez configurer votre connexion serveur une seule fois à partir du menu supérieur d’Aide au lieu de configurer votre connexion par flux dans l’étape Script en cliquant sur Connexion au serveur Tableau Python (TabPy) et en entrant vos détails de connexion. Vous devrez reconfigurer votre connexion à l’aide de ce nouveau menu pour tous les flux qui ont été créés dans une version antérieure de Tableau Prep Builder que vous ouvrez dans la version 2020.3.3.

  1. Sélectionnez Aide > Paramètres et performances > Gérer la connexion à une extension analytique.
  2. Dans la liste déroulante Sélectionner une extension d’analyse, sélectionnez Serveur Tableau Python (TabPy).

  3. Entrez vos informations d’identification :
    • Le port 9004 est le port par défaut de TabPy.
    • Si le serveur exige des informations d’identification, entrez un nom d’utilisateur et un mot de passe.
    • Si le serveur utilise le cryptage SSL, cochez la case Nécessite SSL, puis cliquez sur le lien Aucun fichier de configuration personnalisé... pour spécifier un certificat pour la connexion. Ceci est votre fichier de certificat de serveur SSL.

      Remarque : Tableau Prep Builder ne permet pas de tester la connexion. En cas de problème avec la connexion, un message d’erreur s’affiche.

Ajouter un script à votre flux

Démarrez votre serveur TabPy puis effectuez les étapes suivantes :

Remarque : TabPy nécessite la version 5.1.1 du package tornado pour fonctionner. Si vous recevez l’erreur « 'tornado.web' has no attribute 'asynchronous' » lorsque vous tentez de démarrer TabPy, à partir de la ligne de commande exécutez pip list pour vérifier la version de tornado qui a été installée. Si vous avez installé une version différente, téléchargez le package tornado version 5.1.1(Le lien s’ouvre dans une nouvelle fenêtre). Exécutez ensuite pip uninstall tornado pour désinstaller votre version actuelle, puis exécutez pip install tornado==5.1.1 pour installer la version requise.

  1. Ouvrez Tableau Prep Builder et cliquez sur le bouton Ajouter une connexion .

    Dans la création Web, depuis la page d’accueil, cliquez sur Créer > Flux, ou depuis la page Explorer, cliquez sur Nouveau > Flux. Cliquez ensuite sur Se connecter aux données.

  2. Dans la liste des connecteurs, sélectionnez le type de fichier ou le serveur hébergeant vos données. Si vous y êtes invité, entrez les informations de connexion et accédez à vos données.

  3. Cliquez sur l’icône plus et sélectionnez Ajouter un script dans le menu contextuel.

  4. Dans le volet Script, dans la section Type de connexion, sélectionnez Serveur Tableau Python (TabPy).

  5. Dans la section Nom de fichier, cliquez sur Parcourir pour sélectionner votre fichier script.
  6. Entrez le Nom de la fonction puis appuyez sur Entrée pour exécuter votre script.

Merci de vos commentaires !Avis correctement envoyé. Merci