Qlik Community

Ask a Question

Brasil

Announcements
Support Cases coming to Qlik Community Oct. 4! Start chats, open cases, explore resources. READ DETAILS>
cancel
Showing results for 
Search instead for 
Did you mean: 
flaviosouzaed
Contributor III
Contributor III

Section Access com mais de um criterio

Boa tarde,

estou com muita dificuldade em resolver um problema de acesso, tenho um modelo em star schema da seguinte maneira:

Sem título.png

O acesso é feito com 3 critérios da seguinte maneira:

1) O usuário devera ver apenas quem esta abaixo dele na hierarquia e ver ele mesmo, então um supervisor veria vendedores e um vendedor veria apenas a si mesmo, esse relacionamento estou fazendo atualmente pela ligação entre as tabelas dim_responsaveis e permissões.

2) O usuário terá acesso a algum canal, pode ser um ou mais de um, para fazer essa redução eu uso a tabela dim_canal de venda e canais_permissao.

3) O usuário pode ver todos os grupos de produto ou apenas um, essa redução esta sendo feita pela relação entre as tabelas DIM_descricao_produto e grupo_cliente_redutor.

Essa forma esta causando uma sobrecarga no momento que o arquivo é carregado no servidor, o servidor cai e o uso da cpu fica altíssimo, andei procurando como fazer essa section com mais de um campo e encontrei essa postagem:

Data Reduction Using Multiple Fields

Resumidamente ele diz que deve haver apenas um campo redutor e esse campo devera conter a concatenação dos campos que devem reduzir os dados.

Não estou sabendo fazer isso no meu modelo, não consigo localizar uma dimensão onde consiga concatenar o representante, canal e grupo de produto de forma que cada linha tenha uma unica combinação para esses valores e tenha todas as possibilidades desses 3 campos na tabela.

Alguém já passou por um problema parecido com um modelo em star schema?

Labels (3)
1 Solution

Accepted Solutions
nicolett_yuri

Flavio, o ideal é que a redução sempre ocorra em registros de apenas uma tabela. Isso significa que você deve organizar os seus dados para que tudo o que precisa ser reduzido esteja em apenas uma tabela, neste caso a LinkTable é ideal.

Olhei o seu modelo e você já possui uma link table, porém a link table não contém os campos em que esta realizando a redução. A solução esta simples (simples, não fácil), basta adicionar os três campos de redução em sua link table para que a tabela de section access faça a ligação em sua linktable.

View solution in original post

9 Replies
nicolett_yuri

Flavio, o ideal é que a redução sempre ocorra em registros de apenas uma tabela. Isso significa que você deve organizar os seus dados para que tudo o que precisa ser reduzido esteja em apenas uma tabela, neste caso a LinkTable é ideal.

Olhei o seu modelo e você já possui uma link table, porém a link table não contém os campos em que esta realizando a redução. A solução esta simples (simples, não fácil), basta adicionar os três campos de redução em sua link table para que a tabela de section access faça a ligação em sua linktable.

View solution in original post

nicolett_yuri

Só um ponto importante: eu acho que o seu problema de performance pode não ser devido a segurança. Para se ter certeza, deixe a app sem segurança e veja se a lentidão continua.

flaviosouzaed
Contributor III
Contributor III
Author

Estou tendo dificuldade de identificar o problema, eu baixei o Optimizer.qvw mas também estou tendo dificuldade de interpretar o resultado.

Se eu postar o resultado desse arquivo você poderia me ajudar a entender onde esta o problema?

flaviosouzaed
Contributor III
Contributor III
Author

Yuri,

fiz uma analise com o DocumentAnalyzer.qvw, não sei interpretar tão bem o arquivo, você poderia me ajudar a analisar os resultados?

memory.png

OBJECTS.png

CAMPOS.png

TABELAS.png

nicolett_yuri

Me envie esse qvw

flaviosouzaed
Contributor III
Contributor III
Author

segue o qvw

nicolett_yuri

Flavio, continuamos esse entendimento no outro post: Alto consumo de CPU

flaviosouzaed
Contributor III
Contributor III
Author

Fiz isso e funcionou perfeitamente, muito obrigado.

josephjr
Contributor II
Contributor II

Yuri, bom dia. E se no caso eu queira que o section access impeça a visualização de toda uma tab? Eu criei o USERID baseado nos nomes que acessarão e  fiz um Section Aplication USERID, Departamento sendo apenas dois registros DEPTO1 e OUTROS. Criei uma variável para mostrar a TAB de forma condicional, só não sei jogar para a variável o valor DEPTO1 quando os autorizados logam e OUTROS quando os não autorizados logam. Como é a melhor forma de fazer isso? Obrigado.