Utilice scripts Python en su flujo

Exención de responsabilidad: Este tema incluye información sobre un producto de terceros. Tenga en cuenta que aunque hacemos todo lo posible para mantener las referencias al contenido de terceros exactas, la información que proporcionamos aquí podría cambiar sin previo aviso a medida que Python también lo haga. Para obtener información más actualizada, consulte la documentación y el soporte técnico de Python.

Python es un lenguaje de programación de alto nivel ampliamente utilizado para la programación de propósito general. Al enviar comandos de Python a un servicio externo a través de Tableau Prep Builder, puede ampliar fácilmente sus opciones de preparación de datos realizando acciones como añadir números de fila, clasificar campos, rellenar campos y realizar otras operaciones de limpieza que, de otro modo, podría realizar utilizando campos calculados.

Para incluir scripts Python en su flujo, necesita configurar una conexión entre Tableau y un servidor TabPy. A continuación, puede utilizar scripts Python para aplicar funciones compatibles a los datos de su flujo utilizando un marco de datos pandas. Cuando agrega un paso de script a su flujo y especifica los detalles de configuración, el archivo y la función que desea utilizar, los datos se pasan de forma segura al servidor TabPy, las expresiones del script se aplican y los resultados se devuelven como una tabla que puede limpiar o generar según sea necesario.

Puede ejecutar flujos que incluyan pasos de script en Tableau Server siempre que haya configurado una conexión con el servidor TabPy. La ejecución de flujos con pasos de script en Tableau Online no es compatible en la actualidad. Para configurar Tableau Server, consulte Configure el servidor Tableau Python (TabPy) para Tableau Server.

Requisitos previos

Para incluir scripts Python en su flujo, complete la siguiente configuración. Crear o ejecutar flujos con pasos de script en Tableau Online no es compatible en la actualidad.

  1. Descargue e instale Python(Link opens in a new window). Descargue e instale la versión más reciente de Python para Linux, Mac o Windows.

  2. Descargue e instale el servidor de Tableau Python (TabPy(Link opens in a new window)). Siga las instrucciones de instalación y configuración para instalar TabPy. Tableau Prep Builder utiliza TabPy para pasar los datos de su flujo a través de TabPy como entrada, aplica su script y luego devuelve los resultados al flujo.

  3. Instalar Pandas. Ejecute pip3 install pandas. Debe usar una trama de datos de panda en sus scripts para integrarlos con Tableau Prep Builder.

Configure el servidor Tableau Python (TabPy) para Tableau Server

Utilice las siguientes instrucciones para configurar una conexión entre el servidor TabPy y Tableau Server.

  • Versión 2019.3 y posteriores: puede ejecutar flujos publicados que incluyan pasos de script en Tableau Server.
  • Versión 2020.4.1 y posteriores: puede crear, editar y ejecutar flujos que incluyan pasos de script en Tableau Server.
  • Tableau Online: actualmente no se admite la creación ni ejecución de flujos con pasos de script.
  1. Abrir la línea/shell de comandos de TSM.
  2. Introduzca los siguientes comandos para establecer la dirección de host, los valores de puerto y el tiempo de espera de la conexión:

    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>

    • Seleccione {maestro-tabpy-secure} para habilitar una conexión segura o {maestro-tabpy} para habilitar una conexión no segura.
    • Si selecciona {maestro-tabpy-secure}, especifique el archivo de certificado -cf<certificate file path> en la línea de comandos.
    • Especifique el --tabpy-connect-timeout-ms <TabPy connect timeout> en milisegundos. Por ejemplo: --tabpy-connect-timeout-ms 900000.
  3. Para desactivar la conexión TabPy, introduzca el siguiente comando

    tsm security maestro-tabpy-ssl disable

Cree su script python

Cuando cree su script, incluya una función que especifique un pandas (pd.DataFrame) como argumento de la función. Esto invocará sus datos desde Tableau Prep Builder. También tendrá que devolver los resultados en un pandas (pd.DataFrame) utilizando los tipos de datos compatibles.

Por ejemplo, para añadir codificación a un conjunto de campos de un flujo, puede escribir el siguiente script:

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

Se admiten los tipos de datos siguientes:

Tipo de datos en Tableau Prep Builder Tipo de datos en Python
String Standard UTF-8 string
Decimal Double
Int Integer
Bool Boolean
Date Cadena en formato ISO_DATE “YYYY-MM-DD” con huso horario opcional. Por ejemplo, “2011-12-03” es una fecha válida.
DateTime Cadena en formato ISO_DATE “YYYY-MM-DDT:HH:mm:ss” con huso horario opcional. Por ejemplo, “2011-12-03T10:15:30+01:00” es una fecha válida.

Nota: Date y DateTime siempre deben devolverse como una cadena válida.

Si desea devolver campos diferentes de los que ha introducido, deberá incluir una función get_output_schema en su script que defina la salida y los tipos de datos. De lo contrario, la salida utilizará los campos de los datos de entrada, que se toman del paso anterior al paso del script en el flujo.

Utilice la siguiente sintaxis cuando especifique los tipos de datos para sus campos en get_output_schema:

Función en Python Tipo de datos resultante
prep_string () String
prep_decimal () Decimal
prep_int () Integer
prep_bool () Boolean
prep_date () Date
prep_datetime () DateTime

El siguiente ejemplo muestra la función get_output_schema añadida al campo que codifica el 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()
})

Conectarse a su servidor de Tableau Python (TabPy)

Importante: a partir de la versión 2020.3.3 de Tableau Prep Builder, podrá configurar la conexión del servidor una vez desde el menú Ayuda de la parte superior en lugar de configurar la conexión por flujo en el paso Script haciendo clic en Conectarse a Tableau Python (TabPy) Server e introduciendo los detalles de la conexión. Deberá volver a configurar la conexión con este nuevo menú para los flujos que se crearon en una versión anterior de Tableau Prep Builder, que vaya a abrir en la versión 2020.3.3.

  1. Seleccione Ayuda > Configuración y rendimiento > Administrar conexión de extensión de análisis.
  2. En la lista desplegable Seleccionar una extensión de Analytics, seleccione Tableau Python (TabPy) Server.

  3. Introduzca sus credenciales:
    • El puerto 9004 es el predeterminado de TabPy.
    • Si el servidor requiere credenciales, introduzca un nombre de usuario y una contraseña.
    • Si el servidor utiliza cifrado SSL, active la casilla Requerir SSL y, a continuación, haga clic en el vínculo Archivo de configuración personalizado... para especificar un certificado para la conexión.

      Nota: Tableau Prep Builder no proporciona una forma de probar la conexión. Si hay un problema con la conexión, aparecerá un mensaje de error.

Añadir un script a su flujo

Inicie su servidor TabPy y luego complete los siguientes pasos:

Nota: TabPy requiere que se ejecute la versión 5.1.1 del paquete tornado. Si recibe el error "'tornado.web' no tiene el atributo 'asíncrono'" al intentar iniciar TabPy, ejecute pip list desde la línea de comandos para comprobar la versión de tornado que se ha instalado. Si tiene una versión diferente instalada, descargue el paquete tornado versión 5.1.1(Link opens in a new window). Ejecute pip uninstall tornado para desinstalar su versión actual, y luego pip install tornado==5.1.1 para instalar la versión requerida.

  1. Abra Tableau Prep Builder y haga clic en el botón Añadir conexión.

    En la creación web, en la página de inicio, haga clic en Crear > Flujo o en la página Explorar, haga clic en Nuevo > Flujo. Después, haga clic en Conectar a datos.

  2. En la lista de conectores, seleccione el tipo de archivo o servidor que aloje sus datos. Si se le solicita, escriba la información necesaria para iniciar sesión y acceder a sus datos.

  3. Haga clic en el icono del signo más y seleccione Añadir script en el menú contextual.

  4. En el panel Script, en la sección Tipo de conexión, seleccione Tableau Python (TabPy) Server.

  5. En la sección Nombre de archivo , haga clic en Examinar para seleccionar el archivo de script.
  6. Introduzca el nombre de la función y pulse Enter para ejecutar el script.

¡Gracias por sus comentarios!