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: 
Anonymous
Not applicable

Filtros em Expressões e Dimensões

Bom dia,

Eu tenho um gráfico com saída em Tabela Dinâmica.

Há uma coluna de Dimensão que é data.

Há várias colunas como Expressões. Umas números inteiros, outras valores, datas e texto.

Existe um outro objeto Lista, com várias datas.

Dependendo da data selecionada na lista, tenho que fazer alguns filtros diferenciados na Tabela Dinâmica.

Diante disso, criei uma expressão:

=if (CONDICAO,

   Sum({<ANOMES={'$(vAnoMesAtual)'}>}NUMERO),

   Sum(NUMERO)

    )

Ou seja, dependendo da data selecionada na Lista, eu filtro apenas o Ano/Mês atual na Tabela.

Até aí tudo bem, funciona corretamente.

O problema é que em algumas colunas o conteúdo não é numérico e sim TEXTO ou DATA. Daí não posso usar o SUM.

Verifiquei as funções e nenhuma pareceu ser apropriada para texto ou data.

Na verdade eu nem precisaria usar o SUM, mas tenho que fazer esse filtro {<ANOMES={'$(vAnoMesAtual)'}>}

dependendo da data que for selecionada na lista. Não sei fazer de outra forma.

Perguntas:

1 - Há como fazer esse filtro, de acordo com a CONDICAO, sem usar SUM ou usando alguma outra função?

2 - Preciso fazer essa expressão para todas as colunas?

3 - Tem como fazer isso na Dimensão, para não ter que repetir a fórmula em todas as Expressões?

Obrigado!!

Labels (1)
28 Replies
Clever_Anjos
Employee
Employee

monta o resultado que você gostaria de obter em um Excel e posta aqui por favor

Anonymous
Not applicable
Author

Oi Clever,

O resultado do exemplo não está errado, só que nele existe uma definição para cada expressão.

O que eu quero saber é:

1 - Como fazer essa definição na dimensão (a ideia seria fazer apenas na dimensão e não ter que repetir toda aquela definição para as expressões)

2 - No meu exemplo fiz com sum, mas a dimensão, por exemplo, é uma data e não se aplica o sum.

Haverá casos onde será texto. Daí como fica?

3 - Mesmo nas expressões, o sum não ficará legal em outros casos, onde não posso somar porcentagens

Eu só estou fazendo assim porque foi o único jeito que encontrei de fazer o filtro com uma variável, usando essas condições que estão no exemplo.

É isso!

Clever_Anjos
Employee
Employee

Deve ser a sexta-feira... não entendi realmente seu requerimento

Anonymous
Not applicable
Author

Basicamente, fazer isso aqui funcionar para a dimensão BD_NN_REFERENCIA, que é uma data.

Acho que a partir disso eu resolvo o resto...

=if(GetSelectedCount(BD_NN_ANOMES) > 1,

  if (Right(GetFieldSelections(BD_NN_ANOMES),7) > Text('$(vAnoMesAtual)'),

   Sum({<BD_NN_ANOMES={'$(vAnoMesAtual)'}>}BD_NN_USED_REAL),

   Sum(BD_NN_USED_REAL)

    )

  ,

  Sum({<BD_NN_ANOMES={'$(=if(GetSelectedCount(BD_NN_ANOMES) > 0,

  if(GetFieldSelections(BD_NN_ANOMES) > Text('$(vAnoMesAtual)'),

  Text('$(vAnoMesAtual)'),

  GetFieldSelections(BD_NN_ANOMES)

    ),

  Text('$(vAnoMesAtual)')

    )

    )'

  }

  >}

  BD_NN_USED_REAL)

   )

Penso que usando essa sintaxe na dimensão, talvez não precise repetir para as expressões.

Clever_Anjos
Employee
Employee

Já conseguiu solucionar? Se sim, marque uma das respostas como "Correta" e nos ajude a manter os foruns organizados

Not applicable
Author

Prezados

Boa noite.

Peguei carona no tópico pois estou atravessando o mesmo problema, preciso fixar seleção  pelo set analysis, porém exibindo o valor original da dimensão (sem função ou cálculo), pelo que entendi não existe como usar a expressão com a seleção sem preceder uma função (sum, count e etc).

Vi fazerem menção sobre as funções concat() e only(), como um arranjo para replicar os valores originais e promover a seleção via expressão, é isso ?

Gratoo

cesaraccardi
Specialist
Specialist

Ola Sandro.

O set analysis so pode ser aplicado dentro de funcoes de agregacao: Sum, Count, Avg, Concat, Only, etc... Se voce pretende fixar uma selecao em uma tabela, ao filtrar as expressoes automaticamente estara filtrando as dimensoes (nao precisa adicionar o filtro nas dimensoes).

Abracos,

Cesar

Not applicable
Author

Olá Cesar

Obrigado pela disponibilidade amigo.

Então, acho que não me fiz claro, peço desculpas. Quis dizer o seguinte, muitas vezes em lugar de uma função de agregação precisamos somente utilizar operadores chamando o próprio valor da dimensão ex: =(VLR_VENDA*.0.50), porém nos vem também em paralelo, a necessidade de que um grupo de seleções seja feita por traz dessa operação, entende ?  ai fiz a pergunta de calouro, será que podemos por a seleção antes dessa operação {<1 dimensao={'"}>}

cesaraccardi
Specialist
Specialist

Sem problemas Sandro.

Acho que voce quis dizer o "proprio valor do campo", certo? Por que VLR_VENDA normalmente nao seria uma dimensao e sim uma medida. Quando voce usar o campo como medida em uma tabela ou grafico sempre utilizara uma agregacao: SUM(VLR_VENDA), no caso de querer multiplicar os valores individuais por 0.50 deve fazer dentro da agregacao: SUM(VLR_VENDA*0.50), ai nesse caso e so adicionar o set analysis para fixar as selecoes:

SUM({1<dimensao={""}>} VLR_VENDA*0.50)