Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
paulinhok14
Creator
Creator

Classificar através de expressão

Pessoal bom dia,

Tenho um gráfico que conta as Parts ao longo do tempo, e minha dimensão é calculada, sendo ela:

= if ( not isNull ( [Tarefa] ) and [Tarefa] <> '' ,   Date ( [Mes_Falha]  , 'MMM/YYYY'  )  )

Pois preciso contar as Parts somente quando contém algo na tarefa (ou não é nula ou não é vazia)

Expressão: Count ( Parts )

Porém, fazendo assim na dimensão, os meses acabam ficando duplicados, como por exemplo:

a.png

Em contrapartida, dessa maneira consigo Classificar por valor numérico e atende a ordem cronológica.

Tentei alterar a dimensão para:

= if ( not isNull ( [Tarefa] ) and [Tarefa] <> '' ,   text ( Date ( [Mes_Falha]  , 'MMM/YYYY'  )  )  )


Isso resolve meu problema de agregação, mas não consigo ordenar a dimensão de maneira correta.


Tentei fazer um match dos valores na Classificação por Expressão mas não deu certo!


Poderiam me ajudar?

Paulo.

Labels (3)
1 Solution

Accepted Solutions
paulinhok14
Creator
Creator
Author

felipedl‌ e thiago.justen

Senhores, volto a comentar aqui para agradecer a atenção e compartilhar a solução, talvez não a mais adequada mas funcional, pois é algo que estava precisando com uma certa urgência.

Na criação do campo Mes_Entrega, deixei de utilizar o comando Date() para evitar os dados embutidos, fiz da seguinte maneira:

Date#(Month([T-Zero]) &'/'& Year([T-Zero]), 'MMM/YYYY') as Mes_Entrega

Utilizei as funções Month() e Year() para ler apenas mês e ano da data completa, concatenei uma barra no meio e fiz a interpretação da entrada de texto através do Date#(). Não sei dizer o por que de ter funcionado com o Date#() e não com o Date(), talvez pelo fato da entrada do primeiro ser texto e a do segundo numérica.

Assim as duplicatas do Mes_Falha foram removidas, e como ficou formatado como um campo de data pude classificar em ordem cronológica sem problemas.

Reitero o agradecimento pela atenção, abraço!

View solution in original post

17 Replies
Thiago_Justen_

Paulo, lembro desse seu problema...

Faça um teste:

Mantenha como dimensão [Mes_Falha] - sem o if feito acima.


Como expressão use o seguinte:

Count(if(Not IsNull([Mes_Falha]),Tarefa)


Daí seu problema de classificação deve cessar.

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
felipedl
Partner - Specialist III
Partner - Specialist III

Imagino que seu mês esteja duplicando pois sua dimensão de data retorna vários valores.

Exemplo:

Se você tiver um calendário com várias datas

01/01/2018

02/01/2018

03/01/2018

04/01/2018


Se eu fizer a dimensão em cima desses valores, apenas formatando a data como você está fazendo irá "multiplicar" os valores. Na verdade está correto, pois há valores diferentes de datas, apenas formatados diferente.


É necessário criar uma data única para utilizar como dimensão de mês.


Usando o código abaixo:

load

*,

MonthStart(Data) as MesAno;

Load * Inline

[

Data,Valor

01/01/2018,1

01/04/2018,3

01/05/2018,4

01/06/2018,5

];

sample.png

A dimensão MonthStart(Data) as MesAno me retorna apenas um valor com a soma de todos.

O gráfico da direita apresenta a dimensão de mês com um único valor, enquanto o da esquerda está próximo do que você está fazendo.


Espero ter ajudado.


Felipe.

paulinhok14
Creator
Creator
Author

É então, eu achei que tinha conseguido resolver pois os valores inicias pareciam estar ok, mas depois de arrastar a barra de rolagem vi que não..

A respeito da sua sugestão, o que preciso verificar se não é nulo, e também se não está vazio ( " " ) é o campo tarefa.

Coloquei a dimensão calculada apenas :

Date ( [Mes_Falha]  , 'MMM/YYYY'  )


E na expressão utilizei

Count ( if ( Not isNull ( Tarefa ), Tarefa)

mas nada feito

Thiago_Justen_

Faltou um parenteses aqui:

Count ( if ( Not isNull ( Tarefa ), Tarefa))

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
paulinhok14
Creator
Creator
Author

Felipe, obrigado pela resposta!

Não tenho muito conhecimento teórico de Qlik, mas vejamos se consigo te explicar a minha realidade:

Tenho um campo de Entrega do produto (data)

Ex:

Entrega

07/2016

04/2001

04/2006

E para cada produto tenho um campo que me diz o mês de falha deste produto, porém este valor varia de 1 a 240 para todo produto, então consequentemente os valores de Mes de Falha irão se repetir, por exemplo:


Entrega    Mes_Previsao       Mes_Falha

05/2008            4                   09/2008

08/2001            5                   01/2002

01/2008            8                   09/2008


Os registros são diferentes, pois são produtos com IDs diferentes e datas de entrega diferentes, mas em determinada previsão, eles irão falhar na mesma data, e preciso agregar esses valores para ter a visão de quantos produtos irão falhar naquela determinada data...


Consegui esclarecer?

paulinhok14
Creator
Creator
Author

Aqui eu errei, mas no Qlik eu tinha colocado hehehe....

A dimensão continou duplicada

Thiago_Justen_

Daí pode fazer,

Count(Aggr(Count ( if ( Not isNull ( Tarefa ), Tarefa),[Mes_Falha]))

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
felipedl
Partner - Specialist III
Partner - Specialist III

Entendi sua necessidade Paulo,

Porém o que pode estar acontecendo é que a sua data de onde você deriva os campos Entrega e Mes_Falha, pode acontecer de serem dias distintos, fazendo com que os campos tenham valores em formato numérico diferentes.

Os campos de data no qlik são representados por texto e número, sendo assim, as suas datas podem apresentar o mesmo texto mas não o mesmo número, sendo assim diferentes.

Exemplo

Data: 01/01/2018 e 02/01/2018

Fazendo um campo data deles dois com o formato mês ano eles ficariam em representação dupla

01/01/2018 - 43101

02/01/2018 - 43102

E quando você formata o campo de data para apenas conter o mês ano, o Qlik fará dois campos em cima do número, apesar de ele ser igual textualmente.

Você consegue disponibilizar o arquivo para poder dar uma olhada?

Felipe.

paulinhok14
Creator
Creator
Author

Ah, entendi!! De forma embutida, são registros diferentes...

Deve ser por isso que transformando para texto, as duplicatas eram removidas, porém ai eu não conseguia ordenar de maneira correta.. Seria viável converter para texto como:

= if ( not isNull ( [Tarefa] ) and [Tarefa] <> '' ,  Text ( Date ( [Mes_Falha]  , 'MMM/YYYY'  )  ) )


E aplicar uma classificação através de match ou alguma solução de expressão?


Posso disponibilizar sim, segue anexo