Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
marcelviegas
Contributor 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

];

Tags (1)
1 Solution

Accepted Solutions
marcelviegas
Contributor II

Re: Contar maior da dimensão

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)

)))

10 Replies
MVP
MVP

Re: Contar maior da dimensão

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)

marcelviegas
Contributor II

Re: Contar maior da dimensão

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
Contributor II

Re: Contar maior da dimensão

e Outra se filtrar 2 meses daria o calculo errado.

michellysodre
New Contributor III

Re: Contar maior da dimensão

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
Contributor II

Re: Contar maior da dimensão

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
Contributor II

Re: Contar maior da dimensão

Mestre Clever  tem alguma dica?

cleveranjos

michellysodre
New Contributor III

Re: Contar maior da dimensão

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
Contributor II

Re: Contar maior da dimensão

É 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
Contributor II

Re: Contar maior da dimensão

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)

)))