Construir funções de fórmulas personalizadas
Você pode criar funções personalizadas que os usuários podem acessar no Designer em qualquer lugar em que um editor de expressão esteja disponível na configuração da ferramenta. Para criar uma função personalizada...
Grave um arquivo XML, que envolve os parâmetros em outras chamadas de função.
Grave uma DLL estilo C.
Independentemente do método de criação, as funções são disponibilizadas no Designer usando um arquivo de função de fórmula XML, que deve conter estes atributos:
<name>: um nome exclusivo que aparece na lista de funções.<NumParams>: o número de parâmetros que a função aceita.<Category>: a categoria de função que exibe a função. Pode ser uma nova categoria ou uma existente.<InsertText>: o texto padrão que é inserido no editor de expressão quando a função é usada.<Description>: uma descrição que aparece quando o cursor passa sobre a função.
Funções de fórmulas personalizadas
Se você usar funções de fórmulas personalizadas e sua função personalizada tiver o mesmo nome de uma função do Alteryx existente (ou uma inserida recentemente), poderá encontrar conflitos e resultados inesperados.
Para resolver isso, renomeie sua função personalizada (ou adicione um prefixo/sufixo) para diferenciá-la das funções do Designer instaladas por padrão.
Construir usando XML
Ao criar uma função usando apenas XML, a estrutura do arquivo segue a do exemplo abaixo:
<?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>O elemento NumParams tem um atributo variável. O atributo é definido como falso porque o número de parâmetros aceitos é fixo. Ao usar apenas XML para criar uma função, o número de parâmetros aceitos é sempre fixo.
O elemento Fórmula contém a fórmula que realmente executa o trabalho. O conteúdo não é visível para o usuário. Os parâmetros são sempre referenciados como P1, P2, P3 e assim por diante, independentemente do texto apresentado em InsertText.
Para adicionar uma segunda função ao mesmo arquivo XML, crie outro elemento Função dentro do elemento FormulaAddIn.
Construir usando DLL e XML
Para usar uma DLL, grave a função desejada e, em seguida, exporte-a da DLL. Supondo que a função exportada esteja definida como:
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
};A função exportada tem a assinatura:
typedef long ( _stdcall * FormulaAddInPlugin)(int nNumArgs, FormulaAddInData *pArgs, FormulaAddInData *pReturnValue);
nNumArgs contém o número real de argumentos na chamada.
pArgs aponta para uma matriz dos argumentos reais.
A função deve retornar 1 para sinal de sucesso e 0 para sinal de falha.
pReturnValue retorna o resultado calculado se a chamada for bem-sucedida ou uma mensagem de erro de cadeia de caracteres se a chamada não for bem-sucedida. Todas as cadeias de caracteres retornadas devem ser alocadas com GlobalAlloc e Alteryx Designer gerencia a liberação da cadeia de caracteres.
Com a DLL configurada com sucesso, você precisa fazer referência à DLL a partir do arquivo 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>O elemento NumParams tem um atributo variável. O atributo é definido como verdadeiro porque o número de parâmetros aceitos é variável. Ao usar um número variável de parâmetros, o valor deve ser igual ao número mínimo necessário.
O elemento DLL contém dois elementos filhos que fornecem as informações necessárias sobre a DLL.
<Name>: o nome do arquivo DLL sem extensão.<EntryPoint>: o nome da função exportada que está sendo usada.<RunSingleThreaded>: (parâmetro opcional) a opção para aplicar processamento single-thread. O valor para essa opção pode serFalse(por padrão) ouTrue. Você pode usar esse parâmetro para casos em que a função não funciona corretamente em um ambiente multithread.Nota
Para obter um melhor desempenho, recomendamos alterar a função para funcionar em um ambiente multithread em vez de usar esse parâmetro.
Acessar funções no Designer
Para disponibilizar as funções no Alteryx Designer, vá para a pasta RuntimeData na instalação do Alteryx Designer. Verifique se há uma pasta intitulada \FormulaAddIn. Se a pasta não existir, crie-a.
Exemplo de XML na FormulaAddIn
A pasta contém Sample.xml, um arquivo que está configurado corretamente. Adicione uma categoria, salve o arquivo e reinicie Alteryx Designer para ver a função de amostra.
C:\Arquivos de Programas\Alteryx\bin\RuntimeData\FormulaAddIn
Salve o arquivo XML no diretório \FormulaAddIn. Se estiver usando DLL, salve o arquivo DLL relacionado no mesmo lugar. A convenção de nomenclatura padrão é nomear os arquivos DLL e XML de forma correspondente.
No caso de duas instâncias do Designer em execução simultaneamente em uma máquina (administrador e não administrador), o arquivo XML com funções de fórmula personalizadas deve ser separado para ambas as versões por meio de caminhos diferentes para que seja exibido na interface gráfica do usuário (GUI) do Designer.
Para a versão do não administrador, o caminho é
C:/Arquivos de Programas/Alteryx/bin\RuntimeData\FormulaAddIn.Para a versão do administrador, o caminho é
C:/Alteryx\RuntimeData\FormulaAddIn.