O POWER BI É PARA VOCÊ
Ter visão 360º de sua empresa já é possível com
o Microsoft Power BI.
Usando um conjunto de dados de exemplo para trabalhar com as etapas abaixo, este tutorial mostra como implementar a Segurança em Nível de Linha em um modelo de tabela do Analysis Services local e usá-lo em um relatório do Power BI.
- Crie uma tabela de segurança no banco de dados AdventureworksDW2012
- Criar o modelo de tabela com as tabelas de fatos e dimensões necessárias
- Definir as permissões e as funções de usuário
- Implantar o modelo em uma instância da tabela do Analysis Services
- Criar um relatório do Power BI Desktop que mostra dados personalizados ao usuário que está acessando o relatório
- Implantar o relatório no serviço do Power BI
- Criar um novo dashboard baseado no relatório
- Compartilhar o dashboard com seus colegas
Este tutorial requer o banco de dados AdventureworksDW2012.
Tarefa 1: criar a tabela de segurança de usuário e definir a relação de dados
Há vários artigos publicados que descrevem como definir a segurança dinâmica em nível de linha com o modelo tabular do SSAS (SQL Server Analysis Services) . Para nossa amostra, usamos Implementar a segurança dinâmica usando filtros de linha.
Estas etapas exigem o uso do banco de dados relacional AdventureworksDW2012.
-
No AdventureworksDW2012, crie a tabela
DimUserSecurity
conforme mostrado abaixo. É possível usar o SSMS (SQL Server Management Studio) para criar a tabela. -
Depois de criar e salvar a tabela, você precisa estabelecer a relação entre a coluna
SalesTerritoryID
da tabela deDimUserSecurity
e a colunaSalesTerritoryKey
da tabelaDimSalesTerritory
, conforme mostrado abaixo.No SSMS, clique com o botão direito do mouse em DimUserSecurity e selecione Design. Em seguida, selecione Designer de Tabela > Relações... . Quando terminar, salve a tabela.
-
Adicione usuários à tabela. Clique com o botão direito do mouse em DimUserSecurity e selecione Editar as 200 Primeiras Linhas. Depois de adicionar os usuários, a tabela
DimUserSecurity
deve ser semelhante ao seguinte exemplo:Você verá esses usuários em tarefas futuras.
-
Em seguida, faça uma junção interna com a tabela
DimSalesTerritory
, que mostra os detalhes da região associados ao usuário. O código SQL aqui faz a junção interna e a imagem mostra como a tabela é exibida.SQLCopiar
select b.SalesTerritoryCountry, b.SalesTerritoryRegion, a.EmployeeID, a.FirstName, a.LastName, a.UserName from [dbo].[DimUserSecurity] as a join [dbo].[DimSalesTerritory] as b on a.[SalesTerritoryID] = b.[SalesTerritoryKey]
A tabela unida mostra quem responsável por cada região de vendas, graças à relação criada na etapa 2. Por exemplo, você pode ver que Rita Santos é responsável pela Austrália.
Tarefa 2: criar o modelo de tabela com tabelas de fatos e dimensão
Depois de implementar o data warehouse relacional, será necessário definir o modelo tabular. É possível criar o modelo usando o SSDT (SQL Server Data Tools). Para obter mais informações, confira Criar um novo projeto de modelo tabular.
-
Importe todas as tabelas necessárias no modelo, conforme mostrado abaixo.
-
Depois de importar as tabelas necessárias, você precisa definir uma função chamada SalesTerritoryUsers com a permissão Leitura. Selecione o menu Modelo no SQL Server Data Tools e, em seguida, selecione Funções. No Gerenciador de Funções, selecione Novo.
-
Em Membros no Gerenciador de Funções, adicione os usuários que você definiu na tabela
DimUserSecurity
na Tarefa 1. -
Em seguida, adicione as funções apropriadas às tabelas
DimSalesTerritory
eDimUserSecurity
, conforme mostrado abaixo na guia Filtros de Linha. -
A função
LOOKUPVALUE
retorna valores para uma coluna na qual o nome de usuário do Windows corresponde ao que a funçãoUSERNAME
retorna. Em seguida, você pode restringir as consultas para as quais os valores retornados deLOOKUPVALUE
correspondem aos da mesma tabela ou da tabela relacionada. Na coluna Filtro DAX, digite a seguinte fórmula:DAXCopiar
=DimSalesTerritory[SalesTerritoryKey]=LOOKUPVALUE(DimUserSecurity[SalesTerritoryID], DimUserSecurity[UserName], USERNAME(), DimUserSecurity[SalesTerritoryID], DimSalesTerritory[SalesTerritoryKey])
Nesta fórmula, a função
LOOKUPVALUE
retorna todos os valores para a colunaDimUserSecurity[SalesTerritoryID]
, em que oDimUserSecurity[UserName]
é igual ao nome de usuário do Windows conectado no momento eDimUserSecurity[SalesTerritoryID]
é igual aDimSalesTerritory[SalesTerritoryKey]
.Importante
Ao usar a segurança em nível de linha, a função DAX USERELATIONSHIP não é compatível.
O conjunto de retornos
LOOKUPVALUE
deSalesTerritoryKey
de vendas é usado para restringir as linhas mostradas noDimSalesTerritory
. Somente as linhas em que o valorSalesTerritoryKey
está nas IDs que a funçãoLOOKUPVALUE
retorna são exibidas. -
Para a tabela
DimUserSecurity
, na coluna Filtro DAX, adicione a seguinte fórmula:DAXCopiar
=FALSE()
Essa fórmula especifica que todas as colunas são resolvidas para
false
. Ou seja, as colunas da tabelaDimUserSecurity
não podem ser consultadas.
Agora, é necessário processar e implantar o modelo. Para saber mais, confira Implantar.
Tarefa 3: adicionar fontes de dados ao Gateway de dados local
Depois que o modelo tabular for implantado e estiver pronto para consumo, você precisará adicionar uma conexão de fonte de dados ao servidor tabular do Analysis Services local.
-
Para permitir que o serviço do Power BI acesse o serviço de análise local, é necessário ter um gateway de dados local instalado e configurado no seu ambiente.
-
Depois de configurar o gateway corretamente, é necessário criar uma conexão de fonte de dados à instância de tabela do Analysis Services. Para mais informações, confira Gerenciar sua fonte de dados – Analysis Services.
Após a conclusão desse procedimento, o gateway está configurado e pronto para interagir com sua fonte de dados do Analysis Services local.
Tarefa 4: criar relatórios baseados no modelo tabular do Analysis Services usando o Power BI Desktop
-
Inicie o Power BI Desktop e selecione Obter dados > Banco de Dados.
-
Na lista de fontes de dados, selecione o Banco de Dados do SQL Server Analysis Services e selecione Conectar.
-
Preencha os detalhes da instância de tabela do Analysis Services e selecione Conexão dinâmica. Selecione OK.
Com o Power BI, a segurança dinâmica funciona apenas com uma conexão dinâmica.
-
Você pode ver que o modelo implantado está na instância do Analysis Services. Selecione o respectivo modelo e selecione OK.
Agora, o Power BI Desktop exibe todos os campos disponíveis à direita da tela no painel Campos.
-
No painel Campos, selecione a medida SalesAmount na tabela FactInternetSales e a dimensão SalesTerritoryRegion na tabela SalesTerritory.
-
Para manter esse relatório simples, não adicionaremos mais nenhuma coluna. Para ter uma representação mais significativa dos dados, altere a visualização para Gráfico de rosca.
-
Quando o relatório estiver pronto, você poderá publicá-lo diretamente no portal do Power BI. Na faixa de opções Página Inicial do Power BI Desktop, selecione Publicar.
Tarefa 5: Criar e compartilhar um dashboard
Você criou o relatório e fez a publicação no serviço do Power BI. Agora você pode usar o exemplo criado nas etapas anteriores para demonstrar o cenário de segurança do modelo.
Na função de Gerente de vendas, a usuária Graça pode ver os dados de todas as diferentes regiões de vendas. Graça cria esse relatório e publica-o no serviço do Power BI. Esse relatório foi criado nas tarefas anteriores.
Depois de Graça publicar o relatório, a próxima etapa é criar um dashboard no serviço do Power BI chamado TabularDynamicSec com base no relatório. Na imagem a seguir, observe que Graça consegue ver os dados correspondentes a todas as regiões de vendas.
Agora, Graça compartilha o dashboard com sua colega, Rita, responsável pelas vendas na região da Austrália.
Quando o Rita faz logon no serviço do Power BI e vê o dashboard compartilhado que Graça criou, somente as vendas da região da Austrália ficam visíveis.
Parabéns! O serviço do Power BI mostra a segurança em nível de linha dinâmica definida no modelo tabular do Analysis Services local. O Power BI usa a propriedade EffectiveUserName
para enviar as atuais credenciais de usuário do Power BI à fonte de dados local para executar as consultas.
Tarefa 6: Entender o que acontece nos bastidores
Esta tarefa pressupõe que você esteja familiarizado com o SQL Server Profiler, já que você precisa capturar um rastreamento do criador de perfil do SQL Server na instância tabular do SSAS local.
A sessão é inicializada assim que a usuária, Rita, acessa o dashboard no serviço do Power BI. Você pode ver que a função salesterritoryusers funciona imediatamente com o nome de usuário efetivo rita@contoso.com
Copiar
<PropertyList><Catalog>DefinedSalesTabular</Catalog><Timeout>600</Timeout><Content>SchemaData</Content><Format>Tabular</Format><AxisFormat>TupleFormat</AxisFormat><BeginRange>-1</BeginRange><EndRange>-1</EndRange><ShowHiddenCubes>false</ShowHiddenCubes><VisualMode>0</VisualMode><DbpropMsmdFlattened2>true</DbpropMsmdFlattened2><SspropInitAppName>PowerBI</SspropInitAppName><SecuredCellValue>0</SecuredCellValue><ImpactAnalysis>false</ImpactAnalysis><SQLQueryMode>Calculated</SQLQueryMode><ClientProcessID>6408</ClientProcessID><Cube>Model</Cube><ReturnCellProperties>true</ReturnCellProperties><CommitTimeout>0</CommitTimeout><ForceCommitTimeout>0</ForceCommitTimeout><ExecutionMode>Execute</ExecutionMode><RealTimeOlap>false</RealTimeOlap><MdxMissingMemberMode>Default</MdxMissingMemberMode><DisablePrefetchFacts>false</DisablePrefetchFacts><UpdateIsolationLevel>2</UpdateIsolationLevel><DbpropMsmdOptimizeResponse>0</DbpropMsmdOptimizeResponse><ResponseEncoding>Default</ResponseEncoding><DirectQueryMode>Default</DirectQueryMode><DbpropMsmdActivityID>4ea2a372-dd2f-4edd-a8ca-1b909b4165b5</DbpropMsmdActivityID><DbpropMsmdRequestID>2313cf77-b881-015d-e6da-eda9846d42db</DbpropMsmdRequestID><LocaleIdentifier>1033</LocaleIdentifier><EffectiveUserName>rita@contoso.com</EffectiveUserName></PropertyList>
Com base na solicitação de nome de usuário efetivo, o Analysis Services converte a solicitação para a credencial real contoso\rita
depois de consultar o Active Directory local. Assim que o Analysis Services obtém a credencial, o Analysis Services retorna os dados que o usuário tem permissão para exibir e acessar.
Se ocorrer mais atividades com o dashboard, com o SQL Profiler, você verá uma consulta específica voltada para o modelo de tabela do Analysis Services como uma consulta DAX. Por exemplo, se Rita passar do dashboard para o relatório subjacente, a consulta a seguir ocorrerá.
Você também pode ver abaixo a consulta DAX sendo executada para popular os dados do relatório.
DAXCopiar
EVALUATE
ROW(
"SumEmployeeKey", CALCULATE(SUM(Employee[EmployeeKey]))
)
<PropertyList xmlns="urn:schemas-microsoft-com:xml-analysis">``
<Catalog>DefinedSalesTabular</Catalog>
<Cube>Model</Cube>
<SspropInitAppName>PowerBI</SspropInitAppName>
<EffectiveUserName>rita@contoso.com</EffectiveUserName>
<LocaleIdentifier>1033</LocaleIdentifier>
<ClientProcessID>6408</ClientProcessID>
<Format>Tabular</Format>
<Content>SchemaData</Content>
<Timeout>600</Timeout>
<DbpropMsmdRequestID>8510d758-f07b-a025-8fb3-a0540189ff79</DbpropMsmdRequestID>
<DbPropMsmdActivityID>f2dbe8a3-ef51-4d70-a879-5f02a502b2c3</DbPropMsmdActivityID>
<ReturnCellProperties>true</ReturnCellProperties>
<DbpropMsmdFlattened2>true</DbpropMsmdFlattened2>
<DbpropMsmdActivityID>f2dbe8a3-ef51-4d70-a879-5f02a502b2c3</DbpropMsmdActivityID>
</PropertyList>
Considerações
-
A segurança em nível de linha local com o Power BI só está disponível com a conexão dinâmica.
-
As alterações nos dados após o processamento do modelo seriam imediatamente disponibilizadas para os usuários que estão acessando o relatório com a conexão dinâmica por meio do serviço do Power BI.
Se você tiver Microsoft 365 Apps para Grandes Empresas (dispositivo) ou Microsoft 365 Apps for Education (dispositivo), poderá atribuir licenças ...
Confira todo o nosso conteúdo para pequenas empresas em Ajuda para pequenas empresas & aprendizado.
Confira a ajuda para pequenas ...
A Microsoft lançou as seguintes atualizações de segurança e não segurança para o Office em dezembro de 2023. Essas atualizações ...