Nível: Avançado
Pré-requisito: Conhecer a estrutura e sintaxe de XML e uso das ferramentas de Interface
Você sabia que por de trás de cada workflow e componente do Alteryx há um XML? Não acredita? Então clica com o botão direito sobre um arquivo .yxmd e abra no notepad.
E também é possível ver o XML de cada objeto dentro do Workflow. Essa não é uma opção habilitada por default na instalação, portanto, é necessário permitir esse acesso da seguinte forma:
Clique em Options -> User Settings -> Edit User Settings
Ao abrir as opções, vá até a aba Advanced e selecione a opção "Display XML in Properties Windows"
Feito isso, será possível acessar o código XML da transformação desejada. Clique na transformação e em seguida selecione a segunda opção ( </> ) na janela de propriedades
Agora que você já descobriu como acessar o XML da ferramenta, você sabia que é possível editar o XML de uma transformação, ou seja, alterar o seu metadado de forma dinâmica em tempo de execução do workflow baseado em critérios e parâmetros passados por um usuário de negócio?
Sim! É possível e é feito com uma ação chamada "Update Raw XML with Formula", que existe dentro de um Action Tool. Essa é uma opção muito poderosa, útil e que nos abre uma grande variedade de opções para deixar nossos fluxos analíticos ainda mais dinâmicos.
Mas por que eu usaria isso? Bem, vamos a um caso prático!
Tenho uma macro que identifica os padrões no dado e o mascara da seguinte forma:
Assim, imagine que você esteja lendo dados de código de cliente e quer mascará-los sem perder seu padrão:
ID Cliente |
ID Cliente Mascarado |
123-ABC/10 |
999SXXXS99 |
DF-10 Y6-B |
XXS99WX9SX |
ABC-10AB10 |
XXXS99XX99 |
Meu Deus! Como você fez isso?
Muito simples! Basta adicionar uma ferramenta Fórmula e aplicar 4 funções de expressão regular (REGEX_Replace) sobre o campo desejado, como na imagem abaixo:
A função REGEX_Replace busca em uma palavra um determinado padrão e o achando, o substitui por um outro valor. No exemplo da primeira fórmula: REGEX_Replace([Text],"[a-zA-Z],"X"), a expressão busca todas as letras de A a Z, maiúsculas ou minúsculas, e as substitui pelo valor X. E assim ele aplica as demais fórmulas sobre a mesma palavra substituindo todos os números, espaços em branco e símbolos pelos valores definidos.
Legal hein!
Mas… e se eu quiser deixar a escolha do tipo de mascaramento para o usuário? Por exemplo, o usuário deseja mascarar somente letras e números, mas os espaços e símbolos, não.
Resultado:
ID Cliente |
ID Cliente Mascarado |
123-ABC/10 |
999-XXX/99 |
DF-10 Y6-B |
XX-99 X9-X |
ABC-10AB10 |
XXX-99XX99 |
Para que isso ocorra não podemos permitir que a transformação Fórmula execute as 4 expressões descritas anteriormente pois isso iria mascarar todos os componentes do dado. Então vamos alterar em tempo de execução a própria ferramenta Fórmula inserindo nela somente as expressões que desejamos, baseado nas escolhas do usuário.
E como fazer isso? Alterando o metadado da ferramenta Fórmula passando as expressões regulares corretas por instrução XML ou em outras palavras, "recriar" a ferramenta Fórmula em tempo de execução. 🙂
Então quer dizer que o Alteryx me permite modificar um workflow alterando seu próprio metadado? Sim!
Incrível! Mas como faço isso?
Bom, essa é a parte legal. Vamos lá!
Parte 1: Alterar o XML da Formula Tool
Já vimos no início como ver o metadado de uma ferramenta: basta clicar sobre a ferramenta desejada, no caso a Fórmula e ir para opção imediatamente abaixo da engrenagem de configuração na parte esquerda com o símbolo </>:
É possível ver no XML da ferramenta Fórmula que há 4 expressões criadas previamente. Essas 4 expressões alteram todos os componentes de uma palavra. A ideia é alterar dinamicamente esse metadado para permanecer somente as expressões desejadas de acordo com as escolhas do usuário. Ou seja, se o usuário quer somente alterar letras e números, ao invés de ter 4 expressões na Fórmula, haverá 2 expressões: uma para alterar letras para X e outra para alterar números para 9.
O Control Parameter Tool é a ferramenta ideal para isso por que transforma workflow automaticamente em uma Macro Batch. E o que isso quer dizer? Quer dizer que agora podemos passar por parâmetro um novo código XML para a Fórmula. (a geração desse novo código XML será explicada em seguida)
Ao conectar o Control Parameter à transformação é inserido automaticamente uma Action Tool entre as duas ferramentas, que é usada para alterar o comportamento do objeto que ela está conectada.
Ao selecionar o tipo de ação, vamos escolher a opção "Update Raw XML with Formula". É essa opção que atualiza o metadado da ferramenta.
Selecionado essa opção, na parte inferior da janela de configuração há opção para alterar o XML baseado em uma fórmula, ou seja, é como se estivéssemos falando para o Alteryx o seguinte: "Por favor, não use mais essa Fórmula como foi criada originalmente e sim recrie-a para mim usando esse novo metadado que estou lhe passando agora."
Como o Alteryx é nosso amigo ele entende perfeitamente que essa ferramenta Fórmula agora está recebendo um novo código XML que veio do Control Parameter Tool e substitui o metadado original por esse. Ao executar, ele já vai usar a "nova" ferramenta Fórmula.
Mas como gerou esse XML?
Parte 2: Gerando a nova instrução XML:
Há um fluxo que permite que os usuários escolham que tipo de transformação de mascaramento eles desejam fazer em seus dados (ListBox Tool) e com base nessas escolhas, o workflow editará a sintaxe XML e enviará essa instrução para a macro que irá fazer o mascaramento, como visto acima.
Passo a passo:
Usuário escolhe o campo e os tipos de mascaramento que ele deseja.
A partir da escolha do usuário, passa pelo fluxo somente as variáveis que serão usadas na função REGEX_Replace da Fórmula.
Em uma ferramenta de fórmula, haverá um código XML exatamente igual à expressão original. No entanto, essa expressão será criada usando o parâmetro "From" e "To" do fluxo, que são as opções definidas pelo usuário na interface.
Então, será criado uma expressão diferente para cada escolha do usuário:
Para criar a sintaxe XML, é necessário concatenar em uma única linha todas as expressões. Fazemos isso usando uma ferramenta Summarize:
Depois que o novo código XML é gerado, esse campo é passado como parâmetro para a Macro Batch que executa a função de mascaramento. Agora, a Ferramenta de Fórmula dentro dessa macro será alterada e executará apenas essas novas expressões.
E esse é o resultado esperado. Usuário selecionou somente alterar letras e números e o mesmo ocorreu corretamente.
Esse exemplo mostra como o Alteryx é versátil. Com essa opção podemos criar dinamicamente ferramentas em nosso fluxo, alterar seus parâmetros, realizar comportamentos diferentes baseado em critérios de negócio. O céu é o limite!
Você pode baixar a macro Mask by Pattern aqui
Você deve ser um usuário registrado para adicionar um comentário aqui. Se você já estiver registrado, faça logon. Se você ainda não estiver registrado, registre-se e faça logon.