Herramienta Python
La herramienta Python es un editor de código para usuarios de Python. Se recomienda tener experiencia en Python antes de utilizar esta herramienta.
from ayx import Alteryx
Alteryx.help().
Soporte de Python
Designer acepta código Python personalizado. Alteryx no brinda soporte a código personalizado de Python.
Alteryx compatibilidad con galerías públicas
¿Planea publicar su flujo de trabajo en Gallery.alteryx.com? Primero debe solicitar una exención. Esta restricción no se aplica a las instancias privadas de Alteryx Server y Alteryx Gallery.
Primeros pasos
La interfaz de la ventana de configuración de la herramienta Python se parece a Jupyter Notebook. Si no conoces Jupyter Notebooks, dirígete a Ayuda > Recorrido por la interfaz de usuario o Ayuda > Ayuda de Notebook. Para obtener ayuda con el código, consulta las referencias adicionales que están disponibles en la opción Ayuda de la herramienta.
Si lo necesitas, instala paquetes de ciencia de datos adicionales
La herramienta Python incluye los siguientes paquetes de ciencia de datos más comunes:
- ayx: API de Alteryx
- geopandas: extiende los tipos de datos utilizados por los pandas para permitir operaciones espaciales en tipos geométricos.
- jupyter: metapaquete de Jupyter
- matplotlib: paquete de trazado de Python
- numpy: NumPy, procesamiento de conjuntos de números, cadenas, registros y objetos.
- pandas: versátiles estructuras de datos para análisis de datos, series de tiempo y estadísticas.
- requests: HTTP de Python para humanos.
- scikit-learn: un conjunto de módulos de Python para machine learning y minería de datos
- scipy: SciPy, biblioteca científica de Python
- six: utilidades de compatibilidad de Python 2 y 3.
- SQLAlchemy: biblioteca de abstracción de base de datos.
- statsmodels: cómputos y modelos estadísticos de Python.
Instalación de paquetes adicionales
Dependiendo de qué tipo de instalación de Designer estés usando, puedes instalar paquetes adicionales usando Alteryx.installPackages. El ejemplo a continuación instala keras.
from ayx import Package
Package.installPackages("keras")
- Si estás ejecutando Alteryx sin permisos de administrador, puedes instalar paquetes de Python adicionales sin ningún permiso especial.
- Si estás ejecutando Alteryx con permisos de administrador, primero debes ejecutar Alteryx como administrador para instalar paquetes de Python adicionales. Si no puedes ejecutar Alteryx como administrador, no podrás instalar paquetes de Python adicionales.
Conectar entradas
La herramienta Python acepta múltiples entradas. Una vez que las entradas estén conectadas, debes ejecutar el flujo de trabajo para copiar en caché los flujos de datos entrantes.
Para acceder a una conexión entrante de datos:
- Importa la biblioteca de Alteryx: from ayx import Alteryx
- Accede a la conexión y brinda una variable para utilizar una referencia de datos:
- Utiliza el nombre de la conexión: Alteryx.read("<nombre de la conexión>")
- Lee todas las conexiones y haz referencia a la matriz de índice 0 devuelta: Alteryx.read(Alteryx.getIncomingConnectionNames()[<index number="">])</index>
-
Ejecuta tu flujo de trabajo antes de trabajar con la herramienta Python. Al ejecutar tu flujo de trabajo, se copian en caché tus datos y la herramienta Python los puede acceder. Luego, tus datos son tratados como una estructura de datos pandas. Puedes encontrar más información sobre estructuras de datos pandas en pandas.pydata.org.
from ayx import Alteryx
data1 = Alteryx.read("#1")
from ayx import Alteryx
data2 = Alteryx.read(Alteryx.getIncomingConnectionNames()[1])
Configurar la herramienta
Ejecuta tu flujo de trabajo antes de trabajar con la herramienta Python.
Definir el modo de ejecución del flujo de trabajo
Iniciea el desarrollo con el modo interactivo. De esa manera, se mostrarán todos los errores, advertencias e instrucciones de impresión en Jupyter Notebook. Utiliza el modo Producción para mejorar la velocidad cuando hayas finalizado el desarrollo y quieras ejecutar tu código a través de un intérprete estándar de Python.
¿Necesitas imprimir conjuntos de caracteres multibyte (MBCS)? Consulta Solución de problemas para conocer los pasos para imprimir conjuntos de caracteres multibyte (MBCS) en el modo de producción.
Utiliza el modo interactivo para desarrollar. Esto te permite interactuar con los datos entrantes a través de Jupyter Notebook sin tener que volver a ejecutar el flujo de trabajo para ver los resultados de tu código.
Para configurar el modo interactivo:
- Haz clic en Interactivo para definir el modo interactivo.
- Ejecuta el flujo de trabajo. Alteryx copia en caché los datos entrantes y los deja disponibles para la herramienta Python.
Luego de realizar cambios ascendentes, debes volver a ejecutar el flujo de trabajo para actualizar los datos copiados en caché. Esto asegurará que los datos copiados en caché representen a los datos entrantes reales.
- El shell de Jupyter ejecutó el código en Jupyter Notebook.
- Si tu código invoca a Alteryx.write(), el shell de Jupyter envía los resultados a través de los anclajes de salida.
- El Jupyter Notebook muestra todos los errores, advertencias e instrucciones de impresión. Esto es lo mismo que seleccionar Ejecutar todo.
En el modo producción, Alteryx consolida todas las células Python del Jupyter Notebook en un script de solo lectura. Alteryx utiliza este script de solo lectura para pasar el código al intérprete de Python.
Para configurar el modo de producción:
- Haz clic en Producción para definir el modo de Producción.
- Ejecuta el flujo de trabajo. Alteryx omite el shell de Jupyter y ejecuta el script de solo lectura a través de un intérprete estándar de Python . No se imprimen resultados, errores, advertencias ni instrucciones de impresión en el Jupyter Notebook.
Para editar el script de modo de producción:
- Haz clic en modo Interactivo y, a continuación, edita las celdas en Jupyter Notebook. Una vez que finalices tus ediciones, haz clic en el modo de Producción.
Definir el formato de almacenamiento de datos
El formato de almacenamiento back-end recomendado y predeterminado es YXDB. Como alternativa, puedes seleccionar SQLite.
Para utilizar el formato de almacenamiento YXDB:
- Haz clic en el menú de Alteryx dentro de la ventana de configuración de la herramienta
- Asegúrate de que SQLite no esté seleccionado
Para utilizar el formato de almacenamiento SQLite:
- Haz clic en el menú de Alteryx dentro de la ventana de configuración de la herramienta
- Selecciona Sqlite
SQLite | YXDB | |
Blob | No admitido | Apoyado |
Objetos espaciales | No admitido |
Admite el paso de objetos espaciales entre la herramienta Python y otras herramientas. Es útil utilizar las etiquetas de metadatos al crear salidas de objetos espaciales desde la herramienta Python. Las columnas de objetos espaciales se cargan en los pandas DataFrame como cadenas que contienen geojson. Para enviar una columna espacial (representada como cadenas geojson) de nuevo fuera de la herramienta Python, se debe incluir el tercer parámetro opcional de 'Alteryx.write()' especificando el tipo como SpatialObj. (por ejemplo, 'Alteryx.write(df, 1, ?"mi_campo_espacial": "tipo": "SpatialObj" ) Además, se incluyen varios paquetes como 'geopandas' y sus dependencias, que se pueden importar a la herramienta Python para hacer un uso adicional de los datos espaciales. |
Limitación de columnas | El límite es 2000 | Sin limitación |
Nota sobre valores nulos | Las columnas numéricas/byte que contienen valores nulos se convertirán en un tipo de datos float64, punto flotante de precisión doble. | YXDB admite valores nulos en float64 mediante numpy.NaN y en tipos enteros mediante enteros pandas que aceptan valores nulos. |
Si no vas a cambiar la disposición de las filas ni a usar GeoSpatial Python, Alteryx te recomienda que segmentes los datos GeoSpatial del conjunto de datos y los vuelvas a unir luego de la herramienta Python. La razón es que la conversión hacia y desde texto Alteryx Binary a texto GeoSpatial no es rápida.
Importar un archivo o directorio
Dependiendo de cuánto control quieras sobre las rutas relativas, puedes usar la función de importar de Alteryx del menú de Alteryx o usar el comando de importar. Puedes importar un script existente de Python o Jupyter Notebook usando la función importar de Alteryx. Si deseas administrar rutas relativas, usa el comando importar en la célula. Algunos ejemplos de importar incluyen el uso del comando importar para importar un directorio o el uso de la función importar de Alteryx para importar un solo script.
Para importar un script de Python o Jupyter Notebook
- Haz clic en el menú de Alteryx y, luego, selecciona Importar script.
- Haz clic en Elegir archivo y luego navega a un archivo
.py
o.ipynb
. - Haz clic en Importar.
Alteryx importa el archivo.
Utilizar el menú Kernel
- Detener el proceso: haz clic en el menú Kernel y luego selecciona Interrumpir para detener el proceso.
- Volver a comenzar el proceso: haz clic en el menú Kernel y luego selecciona la opción Reiniciar para volver a comenzar el proceso del entorno interactivo.
- Reiniciar el proceso: haz clic en el menú Kernel y luego selecciona Volver a conectar para borrar los resultados intermedios del workbook.
- Cambiar el kernel no proporciona funcionalidad.
- No recomendamos que selecciones Apagar.
Generar datos de la herramienta
Usa Alteryx.write para generar datos en la salida de la herramienta.
- Para enviar datos de otras herramientas al lienzo, utiliza Alteryx.write(<estructuras de datos pandas>, <número de ancla de salida>).
Alteryx.write(df,1)
- Alteryx.write solo acepta estructuras de datos pandas. Si tienes datos en otro formato, utiliza la biblioteca pandas para convertirlos en una estructura de datos pandas. La biblioteca pandas está preinstalada en Designer y se puede acceder en Jupyter Notebook usando import pandas.
- Puedes enviar hasta cinco estructuras de datos a los anclajes de salida.
Mejores prácticas
Las siguientes mejores prácticas te ayudarán a trabajar con éxito con la herramienta Python.
Utiliza Alteryx.getWorkflowConstant cuando te refieras a una constante de flujo de trabajo, como Engine.WorkflowDirectory. De lo contrario, el resultado o la salida del comando reemplaza de manera permanente al comando en Jupyter Notebook cuando ejecutas tu código. Evita usar contenedores % en constantes del flujo de trabajo. Por ejemplo, para invocar Engine.WorkflowDirectory, usa lo siguiente:
from ayx import Alteryx
Alteryx.getWorkflowConstant("Engine.WorkflowDirectory")
Resolución de problemas
Si observas que el código está desapareciendo de las herramientas de Python en flujos de trabajo guardados anteriormente cuando se abren en Alteryx Designer, esto puede deberse a que la configuración automática está deshabilitada en Configuración de usuario. Para resolver este problema:
- Habilita Configuración automática: para ello, visita Configuración de usuario en Opciones. Navega a Editar la configuración del usuario > Opciones avanzadas y, a continuación, anula la selección de Deshabilitar configuración automática. Ver: Configuración del usuario
O, - Después de abrir el flujo de trabajo, ejecuta el flujo de trabajo sin hacer clic en ninguna de las herramientas de Python. Esto rellenará las herramientas de Python con el código de Python preexistente.
Para imprimir conjuntos de caracteres multibyte (MBCS) en modo de producción:
- Haz clic en el modo Interactivo.
- Escribe lo siguiente en una celda cerca de la parte superior del Jupyter Notebook:
import sys import codecs if sys.stdout.encoding != 'UTF-8': sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer, 'strict') if sys.stderr.encoding != 'UTF-8': sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict')
- Haz clic en modo de Producción.
- Ejecuta el flujo de trabajo.
Utiliza el siguiente ejemplo de código como ayuda para empezar a usar datos espaciales.
import geopandas as gpd
from shapely.geometry import shape
from json import loads
#lee dataframe que contiene una columna geospatial llamada "spatial"df = Alteryx.read("#1")
# convierte columna espacial de cadenas geojson a objetos shapely
df["spatial"] = df["spatial"].apply(lambda x: None if x is None else shape(loads(x)))
# crea un GeoDataFrame de geopandas especificando la columna espacial como la geometría
gdf = gpd.GeoDataFrame(df, geometry="spatial")