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: 
marcio150972
Creator
Creator

Como passar filtro no Set Analysis conforme seleção

Pessoal,

Ainda sou meio atrapalhado no Set Analysis, estou com um problema e agradeceria a ajuda dos colegas, acredito que seja muito tranquilo de fazer, mas não estou conseguindo trazer a informação conforme a necessidade, segue abaixo a situação:

tenho um objeto tabela simples que tem varias colunas, na coluna "cadastro" eu faço uma contagem de todos os registros conforme um periodo  e se apresenta assim o resultado:

 

Cadastros:


10


dentro da programação eu faço desta maneira:


num(count({<[Classe Prospecção Clientes]={'Médico Oftalmologista'}>}DISTINCT [Registro Prospecção Clientes]),'#.##0')



Só que agora eu preciso adicionar um filtro nessa contagem conforme seleção do usuario:

o filtro e outro objeto:

imagem 1.png

este e o campo que vem do documento: "Classe Prospecção Clientes"

Como nao precisava de filtro antes, eu passava já uma classificação, mas agora mudou, existem mais classificações.

Acredito que no caso  caso eu preciso de uma variável conforme a escolha no item acima,  mas  não sei como setar essa variável e colocar ali no código.

Agradeço a ajuda.

24 Replies
marcio150972
Creator
Creator
Author

Luciano,

No caso, a tabela de cadastro é aonde fica registros de médicos novos e óticas novas., não é uma tabela de classes.

Se eu nomeio para os dois ficarem Classificação Cliente da um erro:


Foram detectados loops na estrutura de sua base de dados. Isto pode causar resultados ambíguos e deve ser evitado. Loop(s) serão interrompidos, se quaisquer tabelas forem configuradas como parcialmente desconectadas.


Se coloco Classe Prospecção Clientes não da esse erro mas carrega só os dados da segunda tabela, com apenas 2 classes.

lucianosv
Specialist
Specialist

Marcio, se entendi bem a segunda tabela ou não têm clientes e você não deve carregar essa dimensão, ou você têm duas tabelas fatos.

Qual a chave de ligação entre as duas tabelas? Se forem duas fatos você terá que concatenar ao invés de fazer o left join.

Precisamos que você entenda e explique melhor os dados.

marcio150972
Creator
Creator
Author

Luciano,

Não consigo disponibilizar aqui uma parte do documento. Vou colocar em anexo como está a estrutura dentro de cada aba

tenho 2 tabelas:

tabela 1

Ponto visitação = armazena toda a informação de visitas realizadas em clientes, nesta tabela existe as seguintes

classificações:

Cadeia
Laboratório
Médico Oftalmologista
Ótica Independente
Rede

tabela 2


Prospecção Clientes: armazena toda a informação cadastramento de novos clientes, nesta tabela existe as seguintes

classificações:

Médico Oftalmologista
Ótica Independente

tenho um tabela que faz a contagem disso:

     

DivulgadorEquipeVisitasCadastrosVisitas + CadastrosVisitas + Cadastros MédicosVisitas + Cadastros Óticas
marciors51611

antes eu não precisava passar filtro:  fazia contagem geral por dia

agora coloquei na tela um objeto de filtro, para o clientes escolher qual classificação ele quer ver os totais:

imagem 1.png

Quando clicar em cadeia ( exemplo) deve vir assim:

DivulgadorEquipeVisitasCadastrosVisitas + CadastrosVisitas + Cadastros MédicosVisitas + Cadastros Óticas
marciors10100

O campo Visitas vem 1 porque so houve visita em um cliente com essa classificação

O campo Cadastro vem 0 porque nao houve cadastramento de clientes novos com essa classificação

o campo visitas + cadastros  e a soma dos dois entao vem 1

O campo Visitas + Cadastros Médicos vem 0 porque e um campo chumbado nesta classificação

O campo Visitas + Cadastros Óticas vem 0 porque e um campo chumbado nesta classificação

Hoje esta assim cada calculo:

Campo Visitas:

=num(if(StatusVisita <> 2, count(DISTINCT [Data Início tmp]) - count(StatusVisitaJustificada),),'#.##0')

Campo Cadastros:


num(count( DISTINCT [Registro Prospecção Clientes]),'#.##0')


Campo Visitas + Cadastros:


=num(if(StatusVisita <> 2, count(DISTINCT [Data Início tmp]) - count(StatusVisitaJustificada),) + count(DISTINCT([Registro Prospecção Clientes])),'#.##0')

Campo Visitas + Cadastros Médicos:


=num(count({<StatusVisita=p()-{2}, [Classificação Cliente]={'Médico Oftalmologista'}>} DISTINCT [Data Início tmp]) - count({<StatusVisita=p()-{2}, [Classificação Cliente]={'Médico Oftalmologista'}>} StatusVisitaJustificada),'#.##0')

+

num(count({<[Classe Prospecção Clientes]={'Médico Oftalmologista'}>}DISTINCT [Registro Prospecção Clientes]),'#.##0')

Campo Visitas + Cadastros Óticas:


=num(num(if(StatusVisita <> 2, count(DISTINCT [Data Início tmp]) - count(StatusVisitaJustificada),),'#.##0')

-

num(count({<StatusVisita=p()-{2}, [Classificação Cliente]={'Médico Oftalmologista'}>} DISTINCT [Data Início tmp]) - count({<StatusVisita=p()-{2}, [Classificação Cliente]={'Médico Oftalmologista'}>} StatusVisitaJustificada),'#.##0')

+

num(count({<[Classe Prospecção Clientes]={'Ótica Independente'}>}distinct([Registro Prospecção Clientes])) ,'#.##0'))

Espero que tenha ficado melhor a explicação desta maneira.

marcio150972
Creator
Creator
Author

Luciano, esqueci de frisar que nas duas tabelas existe o campo classe aonde e armazenada as letras correspondentes a classificação:

applymap('MapTipo',classe) as [Classificação Cliente] na 1 tabela

applymap('MapTipo',classe) as [Classe Prospecção Clientes] na 2 tabela


[MapTipo]:

mapping LOAD * INLINE [

    Cod, Desc

    C, Cadeia

    L, Laboratório

    M, Médico Oftalmologista

    O, Ótica Independente

    R, Rede

   

];

lucianosv
Specialist
Specialist

Está um pouco confuso, mas ficou claro que são duas fatos.

Pelo que entendi Cadastro na verdade é cadastramento e trata-se de um dado mensurável.

Você terá que fazer mais ou menos isso:

Fato:

Load

'Ponto visitação' as Origem,

Campo1,

Campo2,

applymap('MapTipo',classe) as [Classificação Cliente],

outros campos

From Ponto visitação


Concatenate(Fato)

Load

'Prospecção Clientes' as Origem,

Campo1,

Campo2,

applymap('MapTipo',classe) as [Classificação Cliente],

outros campos

From Prospecção Clientes

Desta forma você terá uma só tabela com Classificação única e poderá isolar os dados através do campo Origem.

marcio150972
Creator
Creator
Author

Luciano,

Vou testar assim.

Desde ja te agradeço imensamente pela ajuda.

marcio150972
Creator
Creator
Author

Luciano, não deu certo, acredito que não estou conseguindo  montar desde jeito que tu falou, vou estudar mais a situação, acho que não seja difícil.

O problema é que estou trabalhando muito pouco com o qlikview e ainda não tenho muita experiência, sendo assim a coisa fica um pouco mais complicada, mas te agradeço imensamente a tua ajuda.

marcio150972
Creator
Creator
Author

Avinash ,

It did not work , but I will give one more studied the situation.
I thank you immensely help, thanks.

marcio150972
Creator
Creator
Author

Cesar,

Não deu certo, mas vou dar mais uma estudada na situação.

Te agradeço imensamente a ajuda, valeu meu amigo.

lucianosv
Specialist
Specialist

Achei que tinha funcionado.

Mas a ideia é essa. Vai exigir o trabalho braçal pq o exemplo era simplista.

Abço.