Orientação de relacionamento bidirecional
Este artigo destina-se a você como um modelador de dados que trabalha com o Power BI Desktop. Ele fornece orientação sobre quando criar relações de modelo bidirecional. Uma relação bidirecional é aquela que filtra em ambas as direções.
Nota
Uma introdução às relações de modelo não é abordada neste artigo. Se você não estiver completamente familiarizado com relacionamentos, suas propriedades ou como configurá-los, recomendamos que leia primeiro o artigo Relações de modelo no Power BI Desktop .
Também é importante que você tenha uma compreensão do design do esquema de estrelas. Para obter mais informações, consulte Compreender o esquema em estrela e a importância para o Power BI.
Geralmente, recomendamos que você minimize o uso de relações bidirecionais. Isso porque eles podem afetar negativamente o desempenho da consulta de modelo e, possivelmente, oferecer experiências confusas para os usuários do relatório.
No entanto, há três cenários em que a filtragem bidirecional pode resolver requisitos específicos:
Relações de modelo especiais
As relações bidirecionais desempenham um papel importante ao criar os seguintes dois tipos de relacionamento de modelo especial:
- Um-para-um: Todas as relações um-para-um devem ser bidirecionais — não é possível configurar de outra forma. Geralmente, não recomendamos a criação desses tipos de relacionamentos. Para uma discussão completa e padrões de projeto alternativos, consulte orientação sobre relacionamentos um-para-um.
- Muitos-para-muitos: Ao relacionar duas tabelas de dimensão , é necessária uma tabela de ponte . Um filtro bidirecional é necessário para garantir que os filtros se propaguem pela tabela de ponte. Para obter mais informações, consulte Guia de relacionamento muitos-para-muitos.
Opções de segmentação "com dados"
As relações bidirecionais podem fornecer segmentadores que limitam as opções aos locais onde os dados existem. (Se você estiver familiarizado com Tabelas Dinâmicas e segmentações de dados do Excel, esse é o comportamento padrão ao fornecer dados de um modelo semântico do Power BI ou de um modelo do Analysis Services.) Para ajudar a explicar o que significa, primeiro considere o diagrama de modelo a seguir.
A primeira tabela é denominada Customer
., e contém três colunas: Country-Region
, Customer
e CustomerCode
. A segunda tabela tem o nome Product
e contém três colunas: Color
, Product
e SKU
. A terceira tabela tem o nome Sales
e contém quatro colunas: CustomerCode
, OrderDate
, Quantity
e SKU
. As tabelas Customer
e Product
são tabelas de dimensão e cada uma tem uma relação um-para-muitos com a tabela Sales
. Cada relação filtra em uma única direção.
Para ajudar a descrever como funciona a filtragem bidirecional, o diagrama de modelo foi modificado para revelar as linhas da tabela. Todos os exemplos neste artigo são baseados nesses dados.
Os detalhes da linha para as três tabelas são descritos na seguinte lista com marcadores:
- A tabela
Customer
tem duas linhas:-
CustomerCode
CUST-01,Customer
Customer-1,Country-Region
Estados Unidos da América -
CustomerCode
CUST-02,Customer
Customer-2,Country-Region
Austrália
-
- A tabela
Product
tem três linhas:-
SKU
CL-01,Product
camisola,Color
Verde -
SKU
CL-02,Product
Jeans,Color
Blue -
SKU
AC-01,Product
Chapéu,Color
Azul
-
- A tabela
Sales
tem três linhas:-
OrderDate
1 de janeiro de 2019,CustomerCode
CUST-01,SKU
CL-01, 10Quantity
-
OrderDate
2 de fevereiro de 2019,CustomerCode
CUST-01,SKU
CL-02,Quantity
20 -
OrderDate
3 de março de 2019,CustomerCode
CUST-02,SKU
CL-01,Quantity
30
-
Agora, considere a seguinte página de relatório.
A página é composta por duas segmentações de dados e um visual de cartão. O primeiro segmentador é baseado no campo Country-Region
e tem duas opções: Austrália e Estados Unidos. Atualmente é fatiado pela Austrália. O segundo segmentador é baseado no campo Product
e tem três opções: Chapéu, Jeans e Camisola. Nenhum item é selecionado (o que significa que nenhum produto é filtrado). O visual do cartão exibe uma quantidade de 30.
Quando os usuários de relatório segmentam por Austrália, convém limitar a segmentação de dados para exibir opções em que os dados se relacionam às vendas australianas. Refere-se a mostrar opções de segmentação de dados "com dados". Você pode obter esse comportamento definindo a relação entre as tabelas Product
e Sales
para filtrar em ambas as direções.
A fatia de produtos agora lista uma única opção: T-shirt. Esta opção representa o único produto vendido a clientes australianos.
Primeiro, recomendamos que você considere cuidadosamente se esse design funciona para os usuários do relatório. Alguns utilizadores do relatório acham a experiência confusa porque não entendem por que as opções dos filtros aparecem ou desaparecem dinamicamente quando interagem com outros filtros.
Se você decidir mostrar opções de segmentação de dados "com dados", não recomendamos que configure relações bidirecionais. As relações bidirecionais exigem mais processamento e, portanto, podem afetar negativamente o desempenho da consulta, especialmente à medida que o número de relações bidirecionais no modelo aumenta.
Há uma maneira melhor de obter o mesmo resultado: em vez de usar filtros bidirecionais, você pode aplicar um filtro de nível visual à própria segmentação de dados do produto.
Vamos agora considerar que a relação entre as tabelas Product
e Sales
não filtra mais em ambas as direções. E a seguinte definição de medida foi adicionada à tabela Sales
.
Total Quantity = SUM(Sales[Quantity])
Para mostrar as opções de segmentação de dados do produto "com dados", basta que o produto seja filtrado pela medida Total Quantity
utilizando a condição "não está vazio".
Análise dimensão a dimensão
Um cenário diferente envolvendo relações bidirecionais trata uma tabela de fatos como uma tabela de ponte . Dessa forma, ele suporta a análise de dados de tabela de dimensão dentro do contexto de filtro de uma tabela de dimensão diferente.
Usando o modelo de exemplo neste artigo, considere como as seguintes perguntas podem ser respondidas:
- Quantas cores foram vendidas para clientes australianos?
- Quantos países/regiões compraram jeans?
Ambas as perguntas podem ser respondidas sem resumir os dados na tabela de fatos de ligação. No entanto, exigem que os filtros se propaguem de uma tabela de dimensões para a outra. Quando os filtros se propagam através da tabela de fatos, a sumarização das colunas da tabela de dimensões pode ser obtida usando a função DISTINCTCOUNT DAX — e, possivelmente, as funções MIN e MAX DAX.
Como a tabela de fatos se comporta como uma tabela de ligação, pode-se aplicar a orientação de relacionamento muitos-para-muitos para estabelecer relação entre duas tabelas de dimensão. Será necessário configurar pelo menos uma relação para filtrar em ambas as direções. Para obter mais informações, consulte as orientações sobre o relacionamento de muitos-para-muitos .
No entanto, como já descrito neste artigo, esse design provavelmente resultará em um impacto negativo no desempenho e nas consequências da experiência do usuário relacionadas a opções de segmentação de dados "com dados". Portanto, recomendamos que você ative a filtragem bidirecional em uma definição de medida usando a função CROSSFILTER DAX. Você pode usar a função CROSSFILTER para modificar as direções do filtro — ou até mesmo desabilitar a relação — durante a avaliação de uma expressão.
Considere a seguinte definição de medida adicionada à tabela Sales
. Neste exemplo, a relação de modelo entre as tabelas Customer
e Sales
foi configurada para filtrar em uma única direção.
Different Countries Sold =
CALCULATE(
DISTINCTCOUNT(Customer[Country-Region]),
CROSSFILTER(
Customer[CustomerCode],
Sales[CustomerCode],
BOTH
)
)
Durante a avaliação da medida Different Countries Sold
, a relação entre as tabelas Customer
e Sales
é filtrada em ambas as direções.
A tabela a seguir apresenta estatísticas visuais para cada produto vendido. A coluna Quantity
é simplesmente a soma dos valores de quantidade. A coluna Different Countries Sold
representa a contagem distinta de valores de país-região de todos os clientes que compraram o produto.
Conteúdos relacionados
Para obter mais informações relacionadas a este artigo, confira os seguintes recursos:
- Relações de modelo no Power BI Desktop
- Compreender o esquema em estrela e a importância para o Power BI
- Orientação de relacionamento um-para-um
- Orientação de relacionamento muitos-para-muitos
- Orientação para solução de problemas de relacionamento
- Perguntas? Tente perguntar à Comunidade Fabric
- Sugestões? Contribua com ideias para melhorar o Fabric