Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
Mayron
Contributor III
Contributor III

Converter Mes em Numeros para Ano-Mes

Boa Tarde Prezados,

Estou com uma dúvida, tenho um relatório que está travando a idade dos equipamentos contato em meses (números)exemplo 120 meses, que seriam 10 anos.

Gostaria de converter essa contagem do mês para ANO-MES, seria possível?

 

Desde já agradeço.

Labels (1)
1 Solution

Accepted Solutions
Zapparoli
Creator II
Creator II

Mayron,

Segue o script:

SuaTabela:

Load *,

Floor("Tempo de Vida" / 12) & ' Anos e ' & Mod(Floor("Tempo de Vida"), 12) & ' Meses' as [Tempo Restante]

;

Load

Número,
EMPRESA,
Unidade,
Setor,
Item,
Qt as Quantidade,
"Valor Unitário" as "V. Unitario",
"NF:",
Área,
"Data da Compra" as Data,
Year("Data da Compra") as Ano,
Month("Data da Compra") as Meses,
Day("Data da Compra") as Dia,
"Idade em meses",
Floor("Idade em meses" / 12) & ' Anos e ' & Mod(Floor("Idade em meses"), 12) & ' Meses' as Idade,
Valor as "Valor. Total",
"Vida útil em anos",
Floor("Vida útil em anos" / 12) & ' Anos e ' & Mod(Floor("Vida útil em anos"), 12) & ' Meses' as "T. Vida Util",
"Vida útil em anos" - "Idade em meses" as "Tempo de Vida",
"Data do cadastro"
FROM [lib://ARQUIVOS EXTERNOS (imedilocal_dev.bi)/Inventario/PATRIMONIO MANUTENÇÃO.xlsx]
(ooxml, embedded labels, header is 5 lines, table is EQUIPAMENTOS);

A lógica seria: Primeiro fazemos a subtração do campo, depois aplicamos a lógica do Floor e Mod.

-Zapparoli

Check my Youtube Channel for more Qlik Content
https://www.youtube.com/@ZappaAnalytics

View solution in original post

8 Replies
Zapparoli
Creator II
Creator II

Fala @Mayron!

Consegui chegar em um resultado usando as funções "Floor" e "Mod" usando a seguinte expressão:

Floor([Mes] / 12) & '-' & Mod([Mes], 12) as Idade

Usei a seguinte tabela com dados criados: 

Matheus_Zapparoli_1-1687997032772.png

E esse foi meu resultado:

Matheus_Zapparoli_0-1687997012950.png

Exemplo 88 Meses = 7 anos e 4 meses.

Também podemos adicionar um texto para deixar a dimensão mais legível, como:

Floor([Mes] / 12) & ' Anos e ' & Mod([Mes], 12) & ' Meses' as Idade

E temos: 

Matheus_Zapparoli_2-1687997158359.png

Segue referência da documentação da Qlik para entender melhor sobre as funções que usei:

Mod: https://help.qlik.com/pt-BR/sense/May2022/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/GeneralNum...

Floor: https://help.qlik.com/pt-BR/sense/May2023/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/GeneralNum...

Espero que tenha ajudado.

-Zapparoli

Check my Youtube Channel for more Qlik Content
https://www.youtube.com/@ZappaAnalytics

Mayron
Contributor III
Contributor III
Author

Boa Tarde parceiro, 

Tudo bem? Sempre me salvando. kkkk

Eu fiz aqui, deu certo em partes, não está contabilizando o mês, segue a regra e a print abaixo.

"Idade em meses",
Floor("Idade em meses" / 12) & ' Anos e ' & Mod("Idade em meses", 12) & ' Meses' as Idade,

Mayron_0-1688051537104.png

 

Zapparoli
Creator II
Creator II

Opa, Boa tarde @Mayron !

Isso está ocorrendo por conta da casa decimal ali no mês que está influenciando na hora de fazer divisão.

Consegue fazer um teste usando a seguinte fórmula ?

=Floor("Idade em meses" / 12) & ' Anos e ' & Mod(Floor("Idade em meses"), 12) & ' Meses' as Idade

Estamos usando o floor ali no Mês para arrendondar ele para baixo, já que não calculamos meses pela metade.

-Zapparoli

Check my Youtube Channel for more Qlik Content
https://www.youtube.com/@ZappaAnalytics

Mayron
Contributor III
Contributor III
Author

Maravilha, deu super certo agora.

Mayron_0-1688056905525.png

Me surgiu uma outra dúvida mestre, gostaria de saber o Tempo de Vida que resta pro equipamento, acredito que eu teria que fazer isso dentro do script, pra converter em anos e meses né? Como eu colocaria lá?

Seria esses dois campos.  "Idade em meses " -  "Vida útil"

 

Desde já agradeço todo o apoio.

Zapparoli
Creator II
Creator II

Mayron,

Você pode fazer na parte visual também, porém a melhor pratíca é sempre fazer no Script.

Para achar o tempo de vida, você pode substrair o campo "Vida útil" (considerando que esteja no mesmo formato do campo de Idade em Meses que você indicou) com o campo "Idade em Meses", então ficaria

"Vida útil" - "Idade em Meses" as [Tempo de Vida].

Após isso eu faria um Load Precedente para aquele mesmo cálculo do Floor e Mod que te passei no campo Tempo de Vida.

SuaTabela:

Load *,

=Floor("Tempo de Vida" / 12) & ' Anos e ' & Mod(Floor("Tempo de Vida"), 12) & ' Meses' as [Tempo Restante]

;

Load

SeusCampos,

"Vida útil" - "Idade em Meses" as [Tempo de Vida].

From Seu QVD...

Espero ter esclarecido.

-Zapparoli

Check my Youtube Channel for more Qlik Content
https://www.youtube.com/@ZappaAnalytics

Mayron
Contributor III
Contributor III
Author

Não entendi a segunda parte, como eu faria pra aplicar o Floor e Mod no Tempo de Vida? Vou te mostrar como está o meu Script, nesse caso eu puxo diretamente de um arquivo Excel.

Número,
EMPRESA,
Unidade,
Setor,
Item,
Qt as Quantidade,
"Valor Unitário" as "V. Unitario",
"NF:",
Área,
"Data da Compra" as Data,
Year("Data da Compra") as Ano,
Month("Data da Compra") as Meses,
Day("Data da Compra") as Dia,
"Idade em meses",
Floor("Idade em meses" / 12) & ' Anos e ' & Mod(Floor("Idade em meses"), 12) & ' Meses' as Idade,
Valor as "Valor. Total",
"Vida útil em anos",
Floor("Vida útil em anos" / 12) & ' Anos e ' & Mod(Floor("Vida útil em anos"), 12) & ' Meses' as "T. Vida Util",
"Vida útil em anos" - "Idade em meses" as "Tempo de Vida",
"Data do cadastro"
FROM [lib://ARQUIVOS EXTERNOS (imedilocal_dev.bi)/Inventario/PATRIMONIO MANUTENÇÃO.xlsx]
(ooxml, embedded labels, header is 5 lines, table is EQUIPAMENTOS);

Zapparoli
Creator II
Creator II

Mayron,

Segue o script:

SuaTabela:

Load *,

Floor("Tempo de Vida" / 12) & ' Anos e ' & Mod(Floor("Tempo de Vida"), 12) & ' Meses' as [Tempo Restante]

;

Load

Número,
EMPRESA,
Unidade,
Setor,
Item,
Qt as Quantidade,
"Valor Unitário" as "V. Unitario",
"NF:",
Área,
"Data da Compra" as Data,
Year("Data da Compra") as Ano,
Month("Data da Compra") as Meses,
Day("Data da Compra") as Dia,
"Idade em meses",
Floor("Idade em meses" / 12) & ' Anos e ' & Mod(Floor("Idade em meses"), 12) & ' Meses' as Idade,
Valor as "Valor. Total",
"Vida útil em anos",
Floor("Vida útil em anos" / 12) & ' Anos e ' & Mod(Floor("Vida útil em anos"), 12) & ' Meses' as "T. Vida Util",
"Vida útil em anos" - "Idade em meses" as "Tempo de Vida",
"Data do cadastro"
FROM [lib://ARQUIVOS EXTERNOS (imedilocal_dev.bi)/Inventario/PATRIMONIO MANUTENÇÃO.xlsx]
(ooxml, embedded labels, header is 5 lines, table is EQUIPAMENTOS);

A lógica seria: Primeiro fazemos a subtração do campo, depois aplicamos a lógica do Floor e Mod.

-Zapparoli

Check my Youtube Channel for more Qlik Content
https://www.youtube.com/@ZappaAnalytics

Mayron
Contributor III
Contributor III
Author

Show, você é o cara, estava na dúvida de como fazer isso, sem ter feito antes um Extract e Transform pra temos um QVD pra acessar.

Muito obrigado por toda ajuda que tem me dado, já evolui muito com todo esse conhecimento que tem me passado.

 

Abraço.