RLS estática
- 1Modelagem → Gerenciar funções → Criar.
- 2Nomeie a função (ex.: 'Região Sul') e selecione a tabela dRegiao.
- 3Expressão DAX do filtro: [Regiao] = "Sul".
- 4Salve e teste em Exibir como.
- 5Após publicar, no Serviço: Conjunto de dados → Segurança → adicione os usuários à função.
RLS dinâmica
Uma única função filtra conforme o usuário conectado, usando uma tabela de permissões. É a abordagem correta para qualquer cenário real.
DAXFiltro da função dinâmica
-- Tabela dPermissao: Email | Regiao-- Na tabela dPermissao, expressão da função:[Email] = USERPRINCIPALNAME() -- A relação dPermissao[Regiao] → dRegiao[Regiao] propaga para a fato.-- Se não houver relação física, use o padrão abaixo em dRegiao:[Regiao] IN CALCULATETABLE( VALUES( dPermissao[Regiao] ), dPermissao[Email] = USERPRINCIPALNAME() )Hierarquia de gestão
DAXGestor vê a própria equipe, com PATH
-- Coluna calculada em dVendedorCaminho = PATH( dVendedor[IdVendedor], dVendedor[IdGestor] ) -- Filtro da função RLS em dVendedor:PATHCONTAINS( dVendedor[Caminho], LOOKUPVALUE( dVendedor[IdVendedor], dVendedor[Email], USERPRINCIPALNAME() ))Testando corretamente
- 1No Desktop: Modelagem → Exibir como → marque a função e informe 'Outro usuário' com um e-mail real.
- 2Percorra TODAS as páginas do relatório, inclusive tooltips e páginas de detalhe.
- 3Confira os totais: se o total geral não mudou, a RLS não está filtrando.
- 4No Serviço: Segurança → três pontos da função → Testar como função.
- 5Peça a validação de um usuário real de cada perfil antes do go-live.
Segurança em nível de objeto (OLS) esconde tabelas e colunas inteiras, mas exige ferramenta externa (Tabular Editor). Use quando a existência da coluna já é informação sensível, como salário.