In case you missed the announcement: Alteryx One is here, and so is the Spring Release! Learn more about these new and exciting releases here!

Fórum

SOLUCIONADO

Filtrar parte de texto

GuiMoraesNunes
Meteoroide

Boa tarde 

 

preciso criar uma formula para separar unidades de reais e em seguida criar outra formula para gerar data respeitando a sequencia do campo MÊS/MÉTRICAS

 

exemplo:

 

MÊS/MÉTRICASMÉTRICASDATA
MÊS_1_REAISREAISjul/19
MÊS_1_UNIDADESUNIDADESjul/19
MÊS_2_REAISREAISjun/19
MÊS_2_UNIDADESUNIDADESjun/19
MÊS_3_REAISREAISmai/19
MÊS_3_UNIDADESUNIDADESmai/19
MÊS_4_REAISREAISabr/19
MÊS_4_UNIDADESUNIDADESabr/19

 

obrigado.

6 RESPOSTAS 6
Thableaus
17 - Castor
17 - Castor

Olá @GuiMoraesNunes 

 

Para isolar REAIS e UNIDADES sugiro o REGEX.

 

REGEX_Replace([MÊS/MÉTRICAS], ".*_(.*)", "$1")

 

Basicamente esse REGEX funciona dessa maneira:

 

Isole tudo que vem depois do último underscore(_) e traga essa String para mim.

.*_(.*) - os parenteses indicam o grupo $1, que é a expressão que substitui a original.

 

Para criar a sequência de data, precisamos de mais informações. Qual critério para começar no mês de julho/2019?

 

Abs,

 

GuiMoraesNunes
Meteoroide

segue a ordem

 

mês_1_reais = jul/2019, mês_2_reais = jun/2019 e assim por diante

Thableaus
17 - Castor
17 - Castor

@GuiMoraesNunes 

 

Mas o mês 1 será o atual?

 

Porque se você considerar isso como premissa, nos próximos meses o mês 1 sempre será o de Julho.

 

 

GuiMoraesNunes
Meteoroide

isso mesmo mês 1 é o atual e mês 2 é o anterior e assim por diante

Thableaus
17 - Castor
17 - Castor

@GuiMoraesNunes 

 

Claro, é possível.

Use essa fórmula pra pegar a sequência mês/ano em inglês.

DateTimeFormat(
DateTimeAdd(

DateTimeNow(),1-ToNumber(REGEX_Replace([MÊS/MÉTRICAS], "[^\d]", "")), "months"),

"%b/%y")

 

O que essa fórmula significa?

Primeiro você usa o Regex pra isolar o número 

REGEX_Replace([MÊS/MÉTRICAS], "[^\d]", "")

Isso substitui qualquer caracter que não é dígito por um vazio, deixando você apenas com o número (no caso de mês_1, só 1)

 

Depois você usa a fórmula do DateTimeAdd pra você variar sua data de acordo com esse número:

DateTimeAdd(DateTimeNow(), 1-ToNumber(REGEX_Replace([MÊS/MÉTRICAS], "[^\d]", "")),  "months")

Adicione a data de agora (DateTimeNow()), 1 - o número que está dentro da sua string (em meses). Ou seja, no mês 2, vai ser 1-2, que é -1. Vai adicionar 1 mês negativo na data atual, sendo assim, retornando Junho para Mês 2.

 

Depois, formate sua data no esquema que você quer:

 

DateTimeFormat(
DateTimeAdd(

DateTimeNow(),1-ToNumber(REGEX_Replace([MÊS/MÉTRICAS], "[^\d]", "")), "months"),

"%b/%y")

 

DateTimeFormat é uma função em que você pega uma data e deixa ela no formato de uma string que você deseja, usando parâmetros específicos de data.

Dá uma olhada nesse link para entender melhor a função e os parâmetros https://help.alteryx.com/current/pt-br/Reference/DateTimeFunctions.htm

 

Como isso retorna os nomes dos meses em inglês, por exemplo, maio de 2019 retornaria May/2019, usamos a função Switch para traduzí-los:

 

Switch(Left([Mês],3), Left([Mês],3),
"Feb", "Fev",
"Apr", "Abr",
"May", "Mai",
"Aug", "Ago",
"Sep", "Set",
"Oct", "Out",
"Dec", "Dez") + Right([Mês], 3)

 

Os 3 primeiros caracteres do campo Mês que criamos serão substituídos de acordo com a regra acima:

Feb vira fev

Apr vira Abr e por aí vai...

Esses 3 primeiros caracteres concatenamos com os 3 últimos da direita, que são o "/19", referente ao ano.

 

Pronto, temos o campo data.

 

Segue workflow caso tenha dúvidas.

 

Abs,

GuiMoraesNunes
Meteoroide

deu certo muito obrigado

Rótulos
Autores com maior número de soluções