Diretrizes de relação bidirecional
Este artigo tem como destino você como um modelador de dados que trabalha com o Power BI Desktop. Ele fornece orientação sobre quando criar relações de modelos bidirecionais. Uma relação bidirecional filtra em ambas as direções.
Observação
Este artigo não inclui nenhuma introdução às relações de modelo. Se você não estiver totalmente familiarizado com essas relações, as respectivas propriedades e como configurá-las, recomendamos que leia primeiro o artigo Relações de modelo no Power BI Desktop.
Também é importante que você compreenda o design em esquema em estrela. Para obter mais informações, confira Entender o esquema em estrela e a importância dele para o Power BI.
Em geral, recomendamos que você minimize o uso de relações bidirecionais. Isso ocorre 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 modelos especiais
As relações bidirecionais têm uma função importante na criação dos dois seguintes tipos de relação de modelo especial:
- Um-para-um: Todas as relações de um-para-um devem ser bidirecionais, e não é possível configurá-las de outra forma. Geralmente, não recomendamos a criação desses tipos de relações. Para obter uma discussão completa e padrões de design alternativos, consulte Diretrizes sobre relação 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 Diretrizes de relação muitos para muitos.
Opções de segmentação "com os dados"
As relações bidirecionais podem fornecer segmentações que limitam as opções de onde podem existir dados. (Se você estiver familiarizado com tabelas dinâmicas e segmentações de dados do Excel, é 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 isso 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 é denominada Product
e contém três colunas: Color
, Product
e SKU
. A terceira tabela é denominada 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 é filtrada 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 deste artigo se baseiam nesses dados.
Os detalhes de linha das 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 UnidosCustomerCode
CUST-02,Customer
Customer-2,Country-Region
Australia
- A tabela
Product
tem três linhas:SKU
CL-01,Product
T-shirt,Color
GreenSKU
CL-02,Product
Jeans,Color
BlueSKU
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,Quantity
10OrderDate
February 2 2019,CustomerCode
CUST-01,SKU
CL-02,Quantity
20OrderDate
March 3 2019,CustomerCode
CUST-02,SKU
CL-01,Quantity
30
Agora, considere a página de relatório a seguir.
A página consiste em duas segmentações e um visual de cartão. A primeira segmentação é baseada no campo Country-Region
e tem duas opções: Australia e United States. Atualmente, está segmentado por Australia. A segunda segmentação é baseada no campo Product
, e tem três opções: Hat, Jeans e T-shirt. Nenhum item está selecionado (ou seja, nenhum produto está filtrado). O visual de cartão exibe uma quantidade de 30.
Quando os usuários do relatório filtram por Austrália, talvez você queira limitar o seletor de produtos para mostrar opções em que os dados se relacionem com as vendas australianas. Esse é o significado de mostrar opções de segmentação "com os dados". Você pode obter esse comportamento definindo a relação entre as tabelas Product
e Sales
para filtrar em ambas as direções.
O filtro de produtos agora lista uma única opção: camiseta. Essa opção representa o único produto vendido para clientes australianos.
Primeiro, recomendamos que você considere cuidadosamente se esse design funciona para os usuários do relatório. Alguns usuários de relatórios acham a experiência confusa porque não entendem por que as opções de segmentação aparecem ou desaparecem dinamicamente quando interagem com outras segmentações.
Se você decidir mostrar opções de segmentação "com os dados", não recomendamos que você configure relações bidirecionais. 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 forma melhor de obter o mesmo resultado: em vez de usar filtros bidirecionais, você pode aplicar um filtro no nível do visual diretamente na segmentação de produtos.
Agora, vamos considerar que a relação entre as tabelas Product
e Sales
não filtra mais em ambas as direções. E a definição de medida a seguir foi adicionada à tabela Sales
.
Total Quantity = SUM(Sales[Quantity])
Para mostrar as opções de segmentação de produto "com os dados", as opções precisam ser filtradas pela medida Total Quantity
usando a condição "não está em branco".
Análise de 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 dá suporte à análise de dados da tabela de dimensões dentro do contexto de filtro de uma tabela de dimensões diferente.
Usando o exemplo de modelo deste artigo, considere como é possível responder às seguintes perguntas:
- 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 ponte de fatos. No entanto, eles exigem que os filtros se propaguem de uma tabela de dimensão para a outra. Quando os filtros se propagam por meio da tabela de fatos, o resumo das colunas da tabela de dimensões pode ser obtido 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 ponte, você pode aplicar as diretrizes para relações muitos para muitos para relacionar tabelas de duas dimensões. Ele exigirá a configuração de pelo menos uma relação para filtrar em ambas as direções. Para obter mais informações, consulte Diretrizes de relação muitos para muitos.
No entanto, conforme já mencionado neste artigo, esse design provavelmente resultará em um impacto negativo no desempenho e o usuário terá consequências relacionadas às opções de segmentação de "com os dados". Portanto, recomendamos que você ative a filtragem bidirecional em uma definição de medida usando a função DAX CROSSFILTER. Você pode usar a função CROSSFILTER para modificar as direções de filtro ou até mesmo desabilitar a relação durante a avaliação de uma expressão.
Considere a definição de medida a seguir adicionada à tabela Sales
. Neste exemplo, a relação de modelo entre as tabelas Customer
e Sales
foi configurada para filtrar em uma só 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
filtra em ambas as direções.
O visual da tabela a seguir apresenta as estatísticas de 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údo relacionado
Para obter mais informações relacionadas a este artigo, confira os seguintes recursos:
- Modelar relações no Power BI Desktop
- Entender o esquema em estrela e a importância para o Power BI
- Diretrizes de relação um-para-um
- Diretrizes da relação muitos para muitos
- Diretrizes da solução de problemas de relação
- Perguntas? Tente perguntar na Comunidade Fabric
- Sugestões? Contribua com ideias para aprimorar o Fabric