Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Set Analisys

Boa tarde pessoal,

Estou com a seguinte dúvida. Como eu trago o valor do mes (jan,fev,mar e etc) ao invés do numero do mês ? Creio que ficou claro.

Sum({< Mes = {$(=Max(Mes))}>}TotalDue) / Sum({< Mes = {$(=Max(Mes) - 1)}>}TotalDue)

att. Daniel Veloso

1 Solution

Accepted Solutions
Clever_Anjos
Employee
Employee

No seu caso, crie um campo numérico no seu script que vai dar tudo certo

    Year(OrderDate) as Ano,

    Month(OrderDate) as Mês,

    Num(Month(OrderDate)) as MesNum,

E depois

Sum({< MesNum = {$(=Max(Mes))}>}TotalDue) / Sum({< MesNum= {$(=Max(Mes) - 1)}>}TotalDue)

View solution in original post

12 Replies
Anonymous
Not applicable
Author

Boa tarde Daniel,

Deixe-me ver se entendi bem... Você deseja o valor total de um determinado mês para usar na expressão? Diga-nos que resultado deseja, o que você deseja contabilizar?.

Se possível poste um qvw com parte dos dados para que possamos lhe ajudar melhor.

Felicidades...

TiagoCardoso
Creator II
Creator II

=Month('10/10/1995')

Retorna 'out' -> Nome do mês

Mas não faz sentido trabalhar com dados não-numéricos numa expressão SET.

Abs

Clever_Anjos
Employee
Employee

Se campo mês é uma string ou um dual?

Anonymous
Not applicable
Author

Ah tá! Agora entendi!

A função Month faz isso mesmo. Faz o seguinte:

Formata o resultado com a função Num, assim ó: Num(Month('10/10/1995'), '0') Assim você obterá o número do mês ao invés do nome abreviado.

Felicidades...

Not applicable
Author

Foi aplicado o metodo month numa variavel data, e  ela me retorna o mes em string.

A expressao abaixo objetiva mostrar a evoluçao do mes atual referente ao mes anterior:

Sum({< Mes = {$(=Max(Mes))}>}TotalDue) / Sum({< Mes = {$(=Max(Mes) - 1)}>}TotalDue)


Mas para comparação "< Mes = {$(=Max(Mes))}>".  é preciso transformar o Mes em numero(Pois ele está em string). E o Max(mes) me retorna um inteiro.

Ficou mais claro ?

Segue em anexo o qvd na publicação principal.

Not applicable
Author

O que seria Dual ?

Att. Daniel Veloso

Clever_Anjos
Employee
Employee

Um exemplo: um campo data é um "dual"

Você vê 14/12/2016, mas internamente o Qlik armazena 42718 (quantidade de dias desde 31/12/1899).

=month(Today()) retorna 'dez', certo? Mas internamente ele armazena 12

=num(month(Today()))

Clever_Anjos
Employee
Employee

No seu caso, crie um campo numérico no seu script que vai dar tudo certo

    Year(OrderDate) as Ano,

    Month(OrderDate) as Mês,

    Num(Month(OrderDate)) as MesNum,

E depois

Sum({< MesNum = {$(=Max(Mes))}>}TotalDue) / Sum({< MesNum= {$(=Max(Mes) - 1)}>}TotalDue)

Anonymous
Not applicable
Author

    Oi Daniel,

    Se o seu objetivo é exibir uma evolução em relação ao mês anterior você deve trabalhar com as datas inteiras, caso contrário você não obterá uma resposta correta quando iniciar um novo ano. Para isso use a Seguinte expressão:


(Sum(If(InMonth('$(=Max(Total OrderDate))',OrderDate,0),TotalDue))   //Soma dos valores do maior mês da seleção atual
/
Sum(If(InMonth(AddMonths('$(=Max(Total OrderDate))', -1),OrderDate,0),TotalDue))     //Soma dos valores do segundo maior mês da seleção atual
)-1  //Subtração de 1 para que o percentual de aumento ou queda seja correto

    Veja como fica uma tabela demonstrando os resultados:

Capturar.PNG

    Também anexei seu qvw com essa alteração para que você possa analisar melhor.

    Torço para essa expressão possa atender suas necessidades.

Felicidades...