Trabalhar com relações e cardinalidade

Concluído

Ao contrário de outros sistemas de gestão de bases de dados, o Power BI tem o conceito de direcionalidade numa relação. Esta direcionalidade desempenha um papel importante na filtragem de dados entre várias tabelas. Quando carrega dados, o Power BI procura automaticamente relações que existam dentro dos dados, ao corresponder os nomes das colunas. Também pode utilizar a opção Gerir Relações para editar estas opções manualmente.

Por exemplo, obteve muitas tabelas da base de dados Sales e a imagem seguinte é um exemplo do modelo semântico. O Power BI detetou automaticamente várias relações, mas não é possível discernir o seu significado. Quer ter a certeza de que as relações refletem com precisão as que existem nos seus dados.

Captura de ecrã do modelo semântico de exemplo

Relações

Seguem-se diferentes tipos de relações que encontrará no Power BI.

Relação muitos-para-um (*:1) ou um-para-muitos (1: *)

  • Descreve uma relação na qual tem muitas instâncias de um valor numa coluna que estão relacionadas apenas com uma só instância exclusiva correspondente noutra coluna.

  • Descreve a direcionalidade entre os factos e as tabelas de dimensão.

  • É o tipo de direcionalidade mais comum e é a predefinição do Power BI quando estiver a criar relações automaticamente.

Um exemplo de uma relação um-para-muitos seria entre as tabelas CountryName e Territory, onde pode haver muitos territórios associados a um único país.

Captura de ecrã da relação muitos-para-um.

Relação um-para-um (1:1):

  • Descreve uma relação na qual apenas uma instância de um valor é comum entre duas tabelas.

  • Exige valores exclusivos em ambas as tabelas.

  • Não é recomendado, porque esta relação armazena informações redundantes e sugere que o modelo não foi concebido corretamente. A combinação das tabelas constitui uma prática melhor.

Um exemplo de uma relação um-para-um seria se tivesse produtos e IDs de produto em duas tabelas diferentes. A criação de uma relação um-para-um é redundante e estas duas tabelas devem ser combinadas.

Captura de ecrã da relação um-para-um.

Relação muitos-para-muitos (.):

  • Descreve uma relação na qual muitos valores são comuns nas duas tabelas.

  • Não exige valores exclusivos em nenhuma das tabelas numa relação.

  • Não é recomendado. A falta de valores exclusivos causa ambiguidade e os utilizadores podem não saber que coluna de valores se refere a quê.

Por exemplo, a seguinte imagem mostra uma relação muitos-para-muitos entre as tabelas Sales e Order na coluna OrderDate, porque as múltiplas vendas podem ter múltiplas encomendas associadas às mesmas. É introduzida ambiguidade, porque ambas as tabelas podem ter a mesma data de encomenda.

Captura de ecrã da relação muitos-para-muitos.

Direção do filtro cruzado

Os dados podem ser filtrados num ou ambos os lados de uma relação.

Com uma única direção do filtro cruzado:

  • Apenas uma tabela numa relação pode ser utilizada para filtrar os dados. Por exemplo, a Tabela 1 pode ser filtrada pela Tabela 2, mas a Tabela 2 não pode ser filtrada pela Tabela 1.

    Dica

    Siga a direção da seta na relação entre as tabelas para saber em que direção o filtro irá fluir. Normalmente, quererá que estas setas apontem para a tabela de factos.

  • Para uma relação um-para-muitos ou muitos-para-um, a direção do filtro cruzado será do lado "um", o que significa que a filtragem ocorrerá na tabela que tem muitos valores.

Com filtro cruzado de ambas as direções ou filtro cruzado bidirecional:

  • Uma tabela numa relação pode ser utilizada para filtrar a outra. Por exemplo, uma tabela de dimensão pode ser filtrada através da tabela de factos e as tabelas de factos podem ser filtradas através da tabela de dimensões.

  • Pode ter um desempenho menor ao utilizar uma filtragem cruzada bidirecional com relações muitos-para-muitos.

Deve ter precaução com respeito à filtragem cruzada bidirecional: Não deve ativar relações de filtragem cruzada bidirecional, a menos que compreenda completamente as respetivas ramificações. Se as ativar, poderá causar à ambiguidade, amostragem excessiva, resultados inesperados e potencial degradação do desempenho.

Cardinalidade e direção do filtro cruzado

Para relações um-para-um, a única opção disponível é a filtragem cruzada bidirecional. Os dados podem ser filtrados em ambos os lados desta relação e resultam num valor distinto e inequívoco. Por exemplo, pode filtrar um ID de Produto e ser-lhe devolvido um único Produto e pode filtrar um Produto e ser-lhe devolvido um único ID de Produto.

Para relações muitos-para-muitos, pode optar por filtrar numa única direção ou em ambas as direções com a filtragem cruzada bidirecional. A ambiguidade que está associada à filtragem cruzada bidirecional é amplificada numa relação de muitos-para-muitos, porque existirão múltiplos caminhos entre diferentes tabelas. Se criar uma medida, cálculo ou filtro, podem ocorrer consequências não intencionais onde os seus dados estão a ser filtrados e, dependendo da relação que o motor do Power BI escolher ao aplicar o filtro, o resultado final pode ser diferente. Esta situação também ocorre nas relações bidirecionais e, por isso, deve ter cuidado ao utilizá-las.

Por este motivo, as relações muitos-para-muitos e/ou relações bidirecionais são complicadas. A menos que tenha a certeza do aspeto dos seus dados quando são agregados, este tipo de relações abertas com múltiplas direções de filtragem pode causar múltiplos caminhos através dos dados.

Criar relações muitos-para-muitos

Considere o cenário no qual está encarregado de criar um elemento visual que examine orçamentos para clientes e contas. Pode ter múltiplos clientes na mesma conta e múltiplas contas com o mesmo cliente, pelo que sabe que tem de criar uma relação de muitos-para-muitos.

Captura de ecrã da relação muitos-para-muitos.

Para criar esta relação, aceda a Gerir Relações>Novo. Na janela resultante, crie uma relação entre a coluna ID do Cliente na CustomerTable e AccountTable. A relação está definida como muitos para muitos e o tipo de filtro está em ambas as direções. Será imediatamente avisado de que só deve utilizar este tipo de relação caso se espere que nenhuma das colunas tenha valores exclusivos, já que pode obter valores inesperados. Uma vez que pretende filtrar em ambas as direções, selecione filtragem cruzada bidirecional.

Selecione OK. Criou com êxito uma relação muitos-para-muitos.

Captura de ecrã da relação muitos-para-muitos em Gerir Relação.

Para obter mais informações, veja Many-to-many relationships in Power BI (Relações muitos-para-muitos no Power BI).