Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!
Free Trial

Blog

Insights e ideias das mentes mais brilhantes em análise de dados.
fvilelabr
Alteryx
Alteryx

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.

 

Image1.png

 

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

Image2.png

 

Ao abrir as opções, vá até a aba Advanced e selecione a opção "Display XML in Properties Windows"

Image3.png

 

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

 

Image3.1.png

 

 

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?

 

giphy

 

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:

 

  • Tudo que for letra é substituído por X
  • Tudo que for número é substituído por 9
  • Todo espaço vazio é substituído por W
  • Todo símbolo é substituído por S

 

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:

 

Image4.png

 

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.

 

image5.png

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 </>:

 

image6.png

image7.png

 

É 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)

image8.png

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.

 

image9.png

 

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."

 

image10.png

 

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.

 

image11.png

Passo a passo:

 

Usuário escolhe o campo e os tipos de mascaramento que ele deseja.

 

image12.png

 

image13.png

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.

 

image14.png

 

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.

 

image15.png

Então, será criado uma expressão diferente para cada escolha do usuário:

 

image16.png

 

 

Para criar a sintaxe XML, é necessário concatenar em uma única linha todas as expressões. Fazemos isso usando uma ferramenta Summarize:

 

image17.png

 

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.

 

image18.png

 

E esse é o resultado esperado. Usuário selecionou somente alterar letras e números e o mesmo ocorreu corretamente.

 

image19.png

 

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!

 

giphy

 

Você pode baixar a macro Mask by Pattern aqui 

Comentários
HildebrandoS
Alteryx
Alteryx

Excelente post sobre como alterar XML via ações!!!

FláviaB
Alteryx Community Team
Alteryx Community Team

Genial, @fvilelabr! Obrigada por compartilhar com a nossa Comunidade! 

Rótulos