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 Cloud no es compatible en la actualidad. Para configurar Tableau Server, consulte Configure el servidor Tableau Python (TabPy) para Tableau Server.
Para obtener información sobre cómo configurar sitios en Tableau Server con extensiones de análisis para libros de trabajo, consulte Configurar las conexiones con las extensiones de análisis.
Requisitos previos
Para incluir scripts Python en su flujo, complete la siguiente configuración. Crear o ejecutar flujos con pasos de script en Tableau Cloud no es compatible en la actualidad.
Descargue e instale Python(El enlace se abre en una ventana nueva). Descargue e instale la versión más reciente de Python para Linux, Mac o Windows.
Descargue e instale el servidor de Tableau Python (TabPy(El enlace se abre en una ventana nueva)). 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.
- 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
Si planea publicar, crear, editar y ejecutar flujos que incluyen pasos de script en Tableau Server, deberá configurar una conexión entre su 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 Cloud: actualmente no se admite la creación ni ejecución de flujos con pasos de script.
- Abrir la línea/shell de comandos de TSM.
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
.
- Seleccione
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 |
Los corchetes se pueden utilizar para acceder a filas desde un marco de datos. Los corchetes simples generarán una serie de pandas, mientras que un corchete doble generará un marco de datos pandas.
def create_key(df): return pd.DataFrame({ "Key": ['12345'] })
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.
- Seleccione Ayuda > Configuración y rendimiento > Administrar conexión de extensión de análisis.
En la lista desplegable Seleccionar una extensión de Analytics, seleccione Tableau Python (TabPy) Server.
- 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 Ningún archivo de configuración personalizado especificado... para seleccionar un certificado para la conexión. Este es su archivo de certificado de servidor SSL.
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(El enlace se abre en una ventana nueva). Ejecute pip uninstall tornado
para desinstalar su versión actual, y luego pip install tornado==5.1.1
para instalar la versión requerida.
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.
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.
Haga clic en el icono del signo más y seleccione Añadir script en el menú contextual.
En el panel Script, en la sección Tipo de conexión, seleccione Tableau Python (TabPy) Server.
- En la sección Nombre de archivo , haga clic en Examinar para seleccionar el archivo de script.
Introduzca el nombre de la función y pulse Enter para ejecutar el script.