Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
marcelviegas
Creator II
Creator II

Contar maior da dimensão

prezados,

Tenho uma tabela inline conforme abaixo:

necessito montar uma tabela cujo dimensão seja "VL" E A EXPRESSÃO conte quantos id tem com aquele valor, sendo que deve ser considerado somente 1 vez o ID que é o que tem o maior valor dentro do periodo filtrado, exemplo:

filtro 01/2017  

resultado:

VL  | COUNT(ID)

4    |    2

6    |    1

SEM FILTRO:

VL  | COUNT(ID)

6    |    3

LOAD * INLINE [

ID,VL,MESANO 

1,2,01/2017

1,4,01/2017

1,2,01/2017

1,5,02/2017

1,3,02/2017

1,1,02/2017

1,6,03/2017

1,5,03/2017

1,4,03/2017

2,2,01/2017

2,6,01/2017

2,3,01/2017

2,4,01/2017

2,5,02/2017

2,2,02/2017

2,6,02/2017

3,3,01/2017

3,4,01/2017

3,5,02/2017

3,2,02/2017

3,6,02/2017

3,3,03/2017

3,4,03/2017

3,5,03/2017

];

1 Solution

Accepted Solutions
marcelviegas
Creator II
Creator II
Author

RESOLVIDO COMA EXPRESSÃO ABAIXO.

IF(NIVEL='NIVEL C',

COUNT(TOTAL DISTINCT{<NIVEL={'NIVEL C'}>}ID),

IF(NIVEL='NIVEL B',

COUNT(TOTAL DISTINCT  {<ID=P({<NIVEL={'NIVEL B'}>}ID)>-$<ID=P({<NIVEL={'NIVEL C'}>}ID)>}ID),

IF(NIVEL='NIVEL A',

COUNT(TOTAL DISTINCT {<ID=E({<NIVEL={'NIVEL C','NIVEL B'}>}ID)>}ID)

)))

View solution in original post

10 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

QlikView x64 - [C__tmp_inline.qvw_]---2017-12-13 15_47_00.png

Uma forma seria...


Tmp:

LOAD * INLINE [

ID,VL,MESANO

1,2,01/2017

1,4,01/2017

1,2,01/2017

1,5,02/2017

1,3,02/2017

1,1,02/2017

1,6,03/2017

1,5,03/2017

1,4,03/2017

2,2,01/2017

2,6,01/2017

2,3,01/2017

2,4,01/2017

2,5,02/2017

2,2,02/2017

2,6,02/2017

3,3,01/2017

3,4,01/2017

3,5,02/2017

3,2,02/2017

3,6,02/2017

3,3,03/2017

3,4,03/2017

3,5,03/2017

];


Resumo:

NoConcatenate

LOAD

   MESANO,

   ID,

   max(VL)         as VL

Resident Tmp Group by MESANO,ID;

//

DROP Table Tmp;




e na expressão  count(distinct ID)

furtado@farolbi.com.br
marcelviegas
Creator II
Creator II
Author

Boa tarde Alessandro,

Obrigado pela ajuda, mas eu resumi a questão.

Existe outros filtros vinculado a tabela, inclisive dia.

Eu gsotaria de achar uma solução dentro do tabela(grafico) mesmo mesmo.

marcelviegas
Creator II
Creator II
Author

e Outra se filtrar 2 meses daria o calculo errado.

michellysodre
Contributor III
Contributor III

Marcel,

Complicado isso que você quer... Bom fiz um teste aqui,  fazendo por expressão, já que você diz que por script não dá pois precisa mudar conforme o filtro.

Vai adaptando e agrupando conforme tua base.

Verifique as expressões e a dimensão criada na tabela:

printcomunidade2.JPG

Segue QVD

marcelviegas
Creator II
Creator II
Author

Michelly,

Quase deu certo, eu achei que não seria necessario explicar a relação de outra dimensão que eu necessito adicionar, mas quando eu adiciono uma dimensão da classificação o mesmo se perde, como fora a tabela eu também terei um gráfico de barras com esses valores logo seria necessário ter somente a dimensão da classificação.

Vou anexar um exemplo no qvw que você anexou.

Obrigado pela ajuda.

marcelviegas
Creator II
Creator II
Author

Mestre Clever  tem alguma dica?

cleveranjos

michellysodre
Contributor III
Contributor III

marcelviegas‌, a chave entre as tabelas é o VL??? A lógica se perdeu por conta dessa chave, o correto não seria o ID?

marcelviegas
Creator II
Creator II
Author

É no valor mesmo, pois através do valor eu classifico aquela informação, vou anexar o qvw para vc da uma olhada, inseri um applymap para tirarmos essa relação e evitar confusão.

Consegui tratar o nivel A no grafico, falta somente o B e o C, mas estou no caminho eu acho.

Para contar o nivel A não pode ter o mesmo ID no B e nem no C.

Para contar no nivel B o ID não pode contar no C.

E para contar no C tem que ter a classificação no C.

Segue QVW

marcelviegas
Creator II
Creator II
Author

falta tratar somente o nivel b

IF(NIVEL='NIVEL C',

COUNT(TOTAL DISTINCT{$<NIVEL={'NIVEL C'}>}ID),

IF(NIVEL='NIVEL B',

COUNT(DISTINCT TOTAL {<ID+=P({<NIVEL={'NIVEL B'}>-<NIVEL={'NIVEL C'}>}ID)>}ID),

IF(NIVEL='NIVEL A',

COUNT(DISTINCT TOTAL {<ID=E({<NIVEL={'NIVEL C','NIVEL B'}>}ID)>}ID)

)))