Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
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
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:
E esse foi meu resultado:
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:
Segue referência da documentação da Qlik para entender melhor sobre as funções que usei:
Espero que tenha ajudado.
-Zapparoli
Check my Youtube Channel for more Qlik Content
https://www.youtube.com/@ZappaAnalytics
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,
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
Maravilha, deu super certo agora.
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.
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
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);
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
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.