Skip to main content

Crear Funciones de fórmula personalizadas

Puedes crear funciones personalizadas a las que los usuarios pueden acceder en Designer en cualquier lugar en el que un Editor de expresiones esté disponible en la configuración de la herramienta. Para crear una función personalizada…

  • Escribe un archivo XML, que ajusta parámetros en otras llamadas a función.

  • Escribe una DLL estilo C.

Independientemente del método de creación, las funciones se ponen a disposición en Designer mediante un archivo de función de fórmula XML, que debe contener los siguientes atributos:

  • <name>: un nombre único que aparece en la lista de funciones.

  • <NumParams>: la cantidad de parámetros que acepta la función.

  • <Category>: la categoría de función que muestra la función. Esta puede ser una categoría nueva o una existente.

  • <InsertText>: el texto de datos básicos que se inserta en el Editor de expresiones cuando se utiliza la función.

  • <Description>: una descripción que se muestra cuando se pasa el cursor sobre la función.

Funciones de fórmula personalizadas

Si utilizas funciones de fórmula personalizadas y tu función personalizada tiene el mismo nombre que una función Alteryx existente (o una función Alteryx recientemente incorporada), es posible que recibas resultados y conflictos inesperados.

Para solucionar esto, cambia el nombre de tu función personalizada (o agrega un prefijo o un sufijo) para diferenciarla de las funciones de Designer instaladas como base.

Crear con XML

Cuando se crea una función utilizando solo XML, la estructura del archivo sigue la del siguiente ejemplo:

<?xml version="1.0" encoding="utf-8"?>
<FormulaAddIn>
  <Function>
    <Name>Sample_XML</Name>
    <NumParams variable="false">3</NumParams>
    <Category>Sample</Category>
    <InsertText>Sample_XML(Num1, Num2, Num3)</InsertText>
    <Description>Obtains the average of three numbers.</Description>
    <Formula>((P1+P2+P3)/3)</Formula>
  </Function>
</FormulaAddIn>

El elemento NumParams tiene una variable de atributo. El atributo se establece en falso porque la cantidad de parámetros aceptados es fija. Cuando se utiliza solo XML para crear una función, la cantidad de parámetros aceptados siempre se fija.

El elemento Formula contiene la fórmula que realmente realiza el trabajo. El contenido no es visible para el usuario. Los parámetros siempre se mencionan como P1, P2, P3, y así sucesivamente, independientemente del texto presentado en InsertText.

Para agregar una segunda función al mismo archivo XML, crea otro elemento Function dentro del elemento FormulaAddIn.

Crear con DLL y XML

Para utilizar una DLL, escribe la función deseada y, luego, expórtala desde la DLL. Suponiendo que la función exportada se define de la siguiente manera:

struct FormulaAddInData{
        int nVarType;           // 1 for double, 2 for wchar_t
        int isNull;             // 1 if NULL, 0 if valid
        double dVal;            // valid if nVarType==1 && isNull==0
        const wchar_t * pVal;   // valid if nVarType==2 && isNull==0
};

La función exportada tiene la siguiente firma:

typedef long ( _stdcall * FormulaAddInPlugin)(int nNumArgs, FormulaAddInData *pArgs, FormulaAddInData *pReturnValue);

nNumArgs contiene la cantidad real de argumentos en la llamada.

pArgs apunta a una matriz de los argumentos reales.

La función debe devolver un 1 para indicar que la operación tuvo éxito, y un 0 para indicar fallas.

pReturnValue devuelve el resultado calculado si la llamada es correcta, o un mensaje de error de cadena si la llamada es incorrecta. Cualquier cadena devuelta debe asignarse con GlobalAlloc, y Alteryx Designer administra la liberación de la cadena.

Con la DLL configurado correctamente, debes consultar la DLL desde el archivo XML.

<?xml version="1.0" encoding="utf-8"?>
<FormulaAddIn>
  <Function>
    <Name>AddInData</Name>
    <NumParams variable="true">3</NumParams>
    <Category>Sample</Category>
    <InsertText>AddInData(VarType, isNull, double)</InsertText>
    <Description>Verifies data type before adding data.</Description>
    <Dll>
        <Name>AddInData</Name>
        <EntryPoint>FormulaAddInData</EntryPoint>
    </Dll>
  </Function>
</FormulaAddIn>

El elemento NumParams tiene una variable de atributo. El atributo se establece en verdadero porque la cantidad de parámetros aceptados es variable. Cuando se utiliza un número variable de parámetros, el valor debe ser igual al número mínimo requerido.

El elemento Dll contiene dos elementos secundarios que proporcionan la información necesaria sobre la DLL.

  • <Name>: el nombre del archivo DLL sin extensión.

  • <EntryPoint>: el nombre de la función exportada que se utiliza.

  • <RunSingleThreaded>: (parámetro opcional) la opción para aplicar el procesamiento de un solo hilo. El valor de esta opción puede ser Falso (de forma predeterminada) o Verdadero. Puedes utilizar este parámetro para casos en los que la función no actúa correctamente en un entorno de múltiples hilos.

    Nota

    Para un obtener mejor rendimiento, recomendamos cambiar la función para que actúe en un entorno de hilos múltiples en lugar de utilizar este parámetro.

Acceder a funciones en Designer

Para que las funciones estén disponibles en Alteryx Designer, ve a la carpeta RuntimeData en tu instalación de Alteryx Designer. Busca una carpeta llamada \FormulaAddIn. Si la carpeta no existe, créala.

XML de muestra en FormulaAddIn

La carpeta contiene Sample.xml, un archivo que está configurado correctamente. Agrega una categoría, guarda el archivo y reinicia Alteryx Designer para ver la función de muestra.

C:\Program Files\Alteryx\bin\RuntimeData\FormulaAddIn

Guarda tu archivo XML en el directorio \FormulaAddIn. Si utilizas una DLL, guarda el archivo DLL relacionado en el mismo lugar. La convención de nombres estándar es nombrar los archivos DLL y XML para que coincidan.

En el caso de dos instancias Designer que se ejecutan simultáneamente en una máquina (administrador y no administrador), el archivo XML con funciones de fórmula personalizadas debe estar separado para ambas versiones a través de diferentes rutas que se mostrarán en la GUIDesigner.

  • Para la versión de no administrador, la ruta es C:\Program Files\Alteryx\bin\RuntimeData\FormulaAddIn.

  • Para la versión de administrador, la ruta es C:\Alteryx\RuntimeData\FormulaAddIn.