Ir para conteúdo
  • 0

RLS com condição


Valmir Braz
Ir para solução Solucionado por Frank Figueredo ,

Pergunta

  • Alunos

Boa noite Pessoal. Tudo joia.

 

Estou tentando aplicar uma função condicional no RLS e não estou conseguindo.

De modo geral preciso que  o nome do usuário capturado pela função USERNAME filtre a tabela dAcesso e propague o filtro para a tabela dConcessionaria. Até ai OK.

Porem preciso aplicar uma condição.

Por exemplo:

(IF) Se o nome obtido através da USERNAME tiver dAcesso[ID_Perfil] = 1,

Não Aplica nenhum filtro na tabela dAcesso,

(ELSE)Caso contrario filtre a tabela dAcesso de acordo com o nome obtido através da USERNAME


PS.. Assisti as lives 29 sobre RLS e não consegui aplicar no meu modelo


Enviei em anexo um Excel de exemplo com as 2 tabelas em questão

Desde ja.Obrigado
Exemplo.xlsxExemplo.xlsx

image.thumb.png.baadf32fb95f57850d1603242aa90c80.pngExemplo.xlsx

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

@Valmir Braz acho que consegui o que precisa:

Quando o Username tem perfil 1:

image.png.9501cef220619fa80580ed5450a8eda8.png

 

Quando o Username tem perfil diferente:

image.png.17baa19af1b849258f080dbe132f8460.png

 

A primeira coisa que fiz foi mudar o relacionamento de muitos para muitos, onde o acesso filtra a concessionária:

image.png.6c6e0507f7e41a51d1e6b177aa4d640b.png

 

Depois na dimensão dAcesso, criei uma coluna que será usada para "filtrar" (como está o mesmo valor para todos não vai filtrar, vai manter todos os dados) a dimensão quando o usuário for do perfil 1.

 

Acesso Admin = 1

Depois crie a função:

Basicamente ele busca o id do perfil de quem está logado e ver se é 1, se for então ele "filtra" a tabela de acesso, para os valores que tem Acesso Admin = 1, ou seja todos.

Caso contrário, ele iguala o usuário ao username.

image.png.06e4ec3b5192f0e3e277afe430788010.png

 

IF (
    LOOKUPVALUE(
        dAcesso[ID_PERFIL],
        dAcesso[ID_USUARIO],
        USERNAME()
    ) = 1,
    
    dAcesso[Acesso Admin] = 1,
[ID_USUARIO] = USERNAME()
)

 

Acho que é isso, agora é só ajustar para sua realidade. 

Em anexo segue PBIX.;

Valmir Braz - RLS com condição.pbix

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...