Free Trial

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