Criar e gerir relações no Power BI Desktop

Quando você tem várias tabelas, é provável que você faça alguma análise usando dados de todas essas tabelas. As relações entre essas tabelas são necessárias para calcular os resultados com exatidão e apresentar as informações corretas nos seus relatórios. Na maioria dos casos, você não terá que fazer nada. O recurso de deteção automática faz isso por você. No entanto, às vezes você pode ter que criar relacionamentos por conta própria, ou precisa fazer alterações em um relacionamento. De qualquer forma, é importante entender as relações no Power BI Desktop e como criá-las e editá-las.

Deteção automática durante a carga

Se você consultar duas ou mais tabelas ao mesmo tempo, quando os dados forem carregados, o Power BI Desktop tentará localizar e criar relações para você. As opções de relacionamento Cardinalidade, Direção do filtro cruzado e Tornar esta relação ativa são definidas automaticamente. O Power BI Desktop examina os nomes das colunas nas tabelas que você está consultando para determinar se há relações potenciais. Se houver, essas relações são criadas automaticamente. Se o Power BI Desktop não puder determinar com um alto nível de confiança que há uma correspondência, ele não criará a relação. No entanto, você ainda pode usar a caixa de diálogo Gerenciar relacionamentos para criar ou editar relacionamentos manualmente.

Criar uma relação com a deteção automática

Na guia Modelagem, selecione Gerenciar relações>Deteção automática.

Animation showing how to create a relationship with autodetect.

Criar uma relação manualmente

  1. Na guia Modelagem, selecione Gerenciar relacionamentos>Novos.

  2. Na caixa de diálogo Criar relação, na lista suspensa da primeira tabela, selecione uma tabela. Selecione a coluna que deseja usar na relação.

  3. Na lista suspensa da segunda tabela, selecione a outra tabela desejada na relação. Selecione a outra coluna que pretende utilizar e, em seguida, selecione OK.

    Animation showing how to create a manual relationship.

Por predefinição, o Power BI Desktop configura automaticamente as opções Cardinalidade (direção), Direção do filtro cruzado e Tornar esta relação ativa para a sua nova relação. No entanto, você pode alterar essas configurações, se necessário. Para obter mais informações, consulte Noções básicas sobre opções adicionais.

Se nenhuma das tabelas selecionadas para a relação tiver valores exclusivos, você verá o seguinte erro: Uma das colunas deve ter valores exclusivos. Pelo menos uma tabela em um relacionamento deve ter uma lista distinta e exclusiva de valores-chave, que é um requisito comum para todas as tecnologias de banco de dados relacional.

Se você encontrar esse erro, há algumas maneiras de corrigir o problema:

  • Use Remover duplicatas para criar uma coluna com valores exclusivos. A desvantagem dessa abordagem é que você pode perder informações quando linhas duplicadas são removidas. Muitas vezes, uma chave (linha) é duplicada por um bom motivo.
  • Adicione uma tabela intermediária feita com a lista de valores de chave distintos ao modelo, que será então vinculada a ambas as colunas originais na relação.

Para obter mais informações, consulte esta postagem no blog.

Como alternativa, nos layouts de diagrama de modo de exibição de modelo, você pode arrastar e soltar uma coluna de uma tabela para uma coluna em outra tabela para criar uma relação.

Editar uma relação

Há duas maneiras de editar uma relação no Power BI.

O primeiro método para editar uma relação é usar as relações Editando no painel Propriedades no modo de exibição Modelo, onde você pode selecionar qualquer linha entre duas tabelas para ver as opções de relacionamento no painel Propriedades. Certifique-se de expandir o painel Propriedades para ver as opções de relacionamento.

Screenshot of adjusting relationships in the properties pane.

Você também pode ver uma demonstração em vídeo da edição de relações no painel Propriedades .

O outro método de edição de uma relação é usar a caixa de diálogo Editor de relacionamento, que você pode abrir de várias maneiras de dentro do Power BI Desktop. A lista a seguir mostra diferentes maneiras de abrir a caixa de diálogo Editor de relacionamento:

No modo de exibição Relatório, siga um destes procedimentos:

  • Selecione a faixa de opções> Modelagem Gerenciar relações, selecione a relação e selecione Editar.
  • Selecione uma tabela na lista Campos e, em seguida, selecione o friso >Ferramentas de tabela Gerir relações, selecione a relação e, em seguida, selecione Editar.

Na vista Dados, selecione o friso >Ferramentas de tabela Gerir relações, selecione a relação e, em seguida, selecione Editar.

Na visualização Modelo, siga um destes procedimentos:

  • Selecione o friso> Página Inicial Gerir relações, escolha a relação e, em seguida, selecione Editar.
  • Clique duas vezes em qualquer linha entre duas tabelas.
  • Clique com o botão direito do mouse em qualquer linha entre duas tabelas e escolha Propriedades.
  • Selecione qualquer linha entre duas tabelas e, em seguida, escolha Abrir editor de relações no painel Propriedades .

Por fim, também pode editar uma relação a partir de qualquer vista, clicar com o botão direito do rato ou selecionar as reticências para aceder ao menu de contexto de qualquer tabela, depois selecionar Gerir relações, selecionar a relação e, em seguida, selecionar Editar

A imagem a seguir mostra uma captura de tela da janela Editar relacionamento .

Screenshot of the edit relationship window.

Editando relações usando métodos diferentes

Usar a caixa de diálogo Editar relações é uma experiência mais guiada para editar relações no Power BI e está atualmente em visualização. Você pode ver uma visualização dos dados em cada tabela. À medida que você seleciona colunas diferentes, a janela valida automaticamente a relação e oferece cardinalidade apropriada e seleções de filtro cruzado.

A edição de relações no painel Propriedades é uma abordagem simplificada para editar relações no Power BI. Você só vê os nomes de tabela e as colunas das quais pode escolher, não é apresentada uma visualização de dados e as opções de relacionamento feitas só são validadas quando você seleciona Aplicar alterações. O uso do painel Propriedades e sua abordagem simplificada reduz o número de consultas geradas ao editar um relacionamento, o que pode ser importante para cenários de big data, especialmente ao usar conexões DirectQuery. As relações criadas usando o painel Propriedades também podem ser mais avançadas do que as relações permitidas na caixa de diálogo Editar relações.

Você também pode selecionar várias relações nos layouts do diagrama da visualização Modelo pressionando a tecla Ctrl e selecionando mais de uma linha para escolher várias relações. As propriedades comuns podem ser editadas no painel Propriedades e Aplicar alterações processará as alterações em uma transação.

Relações de seleção única ou múltipla também podem ser excluídas pressionando Delete no teclado. Não é possível desfazer a ação de exclusão, portanto, uma caixa de diálogo solicita que você confirme a exclusão das relações.

Importante

A edição de relações no recurso do painel de propriedades está atualmente em visualização. Enquanto estiver em pré-visualização, a funcionalidade e a documentação podem ser alteradas. Você deve habilitar esse recurso no Power BI Desktop indo para Opções de Arquivo e configurações > Opções > de recursos de visualização e, em seguida, na seção GLOBAL, marque a caixa de > seleção ao lado de Painel derelacionamento.

Configurar mais opções

Ao criar ou editar uma relação, você pode configurar mais opções. Por padrão, o Power BI Desktop configura automaticamente mais opções com base em sua melhor suposição, que pode ser diferente para cada relação com base nos dados nas colunas.

Cardinalidade

A opção Cardinalidade pode ter uma das seguintes configurações:

Muitos para um (*:1): Uma relação muitos-para-um é o tipo de relação padrão mais comum. Isso significa que a coluna em uma determinada tabela pode ter mais de uma instância de um valor, e a outra tabela relacionada, geralmente conhecida como tabela de pesquisa, tem apenas uma instância de um valor.

Um para um (1:1): Em uma relação um-para-um, a coluna em uma tabela tem apenas uma instância de um determinado valor, e a outra tabela relacionada tem apenas uma instância de um determinado valor.

Um para muitos (1:*): Em uma relação um-para-muitos, a coluna em uma tabela tem apenas uma instância de um valor específico, e a outra tabela relacionada pode ter mais de uma instância de um valor.

Muitos para muitos (*:*): Com modelos compostos, você pode estabelecer uma relação muitos-para-muitos entre tabelas, o que remove os requisitos para valores exclusivos em tabelas. Também remove soluções anteriores, como a introdução de novas tabelas apenas para estabelecer relações. Para obter mais informações, consulte Relações com uma cardinalidade muitos-muitos.

Para obter mais informações sobre quando alterar a cardinalidade, consulte Noções básicas sobre opções adicionais.

Direção do filtro cruzado

A opção Direção do filtro cruzado pode ter uma das seguintes configurações:

Ambos: Para fins de filtragem, ambas as tabelas são tratadas como se fossem uma única tabela. A configuração Ambos funciona bem com uma única tabela que tem muitas tabelas de pesquisa que a cercam. Um exemplo é uma tabela de reais de vendas com uma tabela de pesquisa para seu departamento. Esta configuração é frequentemente chamada de configuração de esquema em estrela (uma tabela central com várias tabelas de pesquisa). No entanto, se você tiver duas ou mais tabelas que também tenham tabelas de pesquisa (com algumas em comum), não convém usar a configuração Ambas . Para continuar o exemplo anterior, nesse caso, você também tem uma tabela de vendas de orçamento que registra o orçamento de destino para cada departamento. Além disso, a tabela de departamentos está conectada à tabela de vendas e à tabela de orçamento. Evite a configuração Ambos para esse tipo de configuração.

Único: A direção padrão mais comum, o que significa que as opções de filtragem em tabelas conectadas funcionam na tabela onde os valores estão sendo agregados. Se importar um Power Pivot no Excel 2013 ou num modelo de dados anterior, todas as relações terão uma única direção.

Para obter mais informações sobre quando alterar a direção do filtro cruzado, consulte Noções básicas sobre opções adicionais.

Tornar esta relação ativa

Quando marcada, a relação serve como a relação ativa e padrão. Nos casos em que há mais de uma relação entre duas tabelas, a relação ativa fornece uma maneira para o Power BI Desktop criar automaticamente visualizações que incluem ambas as tabelas.

Para obter mais informações sobre quando ativar um relacionamento específico, consulte Noções básicas sobre opções adicionais.

Compreender as relações

Depois de conectar duas tabelas com uma relação, você pode trabalhar com os dados em ambas as tabelas como se fossem uma única tabela. Você fica livre de ter que se preocupar com detalhes do relacionamento ou nivelar essas tabelas em uma única tabela antes de importá-las. Em muitas situações, o Power BI Desktop pode criar automaticamente relações para você. No entanto, se o Power BI Desktop não puder determinar com um alto grau de certeza que uma relação entre duas tabelas deve existir, ele não criará automaticamente a relação. Nesse caso, deve fazê-lo.

Vamos passar por um tutorial rápido para mostrar melhor como os relacionamentos funcionam no Power BI Desktop.

Gorjeta

Você mesmo pode concluir esta lição:

  1. Copie a seguinte tabela ProjectHours para uma folha de cálculo do Excel (excluindo o título), selecione todas as células e, em seguida, selecione Inserir>Tabela.
  2. Na caixa de diálogo Criar tabela, selecione OK.
  3. Selecione qualquer célula da tabela, selecione Nome da Tabela de Design>da Tabela e insira ProjectHours.
  4. Faça o mesmo para a tabela CompanyProject .
  5. Importe os dados usando Obter Dados no Power BI Desktop. Selecione as duas tabelas como fonte de dados e, em seguida, selecione Carregar.

A primeira tabela, ProjectHours, é um registro de tíquetes de trabalho que registram o número de horas que uma pessoa trabalhou em um determinado projeto.

Horas do Projeto

Bilhete EnviadoPor Horário Projeto DataSubmeter
1001 Alan Brewer 22 Azul 1/1/2013
1002 Alan Brewer 26 Vermelho 2/1/2013
1003 Shu Ito 34 Yellow 12/4/2012
1004 Alan Brewer 13 Orange 1/2/2012
1005 Eli Bowen 29 Roxo 10/1/2013
1006 Nuno Bento 35 Verde 2/1/2013
1007 David Hamilton 10 Yellow 10/1/2013
1008 Mu Han 28 Orange 1/2/2012
1009 Shu Ito 22 Roxo 2/1/2013
1010 Eli Bowen 28 Verde 10/1/2013
1011 Eli Bowen 9 Azul 10/15/2013

Esta segunda tabela, CompanyProject, é uma lista de projetos com uma prioridade atribuída: A, B ou C.

EmpresaProjeto

ProjName Prioridade
Azul A
Vermelho N
Verde C
Yellow C
Roxo N
Orange C

Observe que cada tabela tem uma coluna de projeto. Cada um tem um nome ligeiramente diferente, mas os valores parecem ser os mesmos. Essa diferença é importante, e voltaremos a ela em breve.

Agora que temos nossas duas tabelas importadas para um modelo, vamos criar um relatório. A primeira coisa que queremos obter é o número de horas enviadas por prioridade do projeto, por isso selecionamos Prioridade e Horas no painel Campos .

Screenshot of the Priority and Hours fields selected from the Fields pane.

Se olharmos para nossa tabela na tela de relatório, você verá que o número de horas é de 256 para cada projeto, que também é o total. Claramente, este número não está correto. Porquê? É porque não podemos calcular uma soma total de valores de uma tabela (Horas na tabela Projeto), fatiada por valores em outra tabela (Prioridade na tabela CompanyProject) sem uma relação entre essas duas tabelas.

Então, vamos criar uma relação entre essas duas tabelas.

Lembra-se daquelas colunas que vimos em ambas as tabelas com um nome de projeto, mas com valores parecidos? Usaremos essas duas colunas para criar uma relação entre nossas tabelas.

Porquê estas colunas? Bem, se olharmos para a coluna Project na tabela ProjectHours, veremos valores como Azul, Vermelho, Amarelo, Laranja e assim por diante. Na verdade, vemos várias linhas que têm o mesmo valor. Na verdade, temos muitos valores de cor para o Project.

Se olharmos para a coluna ProjName na tabela CompanyProject , veremos que há apenas um de cada um dos valores de cor para o nome do projeto. Cada valor de cor nesta tabela é único, e isso é importante, porque podemos criar uma relação entre essas duas tabelas. Neste caso, uma relação muitos-para-um. Em uma relação muitos-para-um, pelo menos uma coluna em uma das tabelas deve conter valores exclusivos. Existem mais algumas opções para alguns relacionamentos, que veremos mais adiante. Por enquanto, vamos criar uma relação entre as colunas do projeto em cada uma de nossas duas tabelas.

Para criar a nova relação

  1. Selecione Gerenciar relacionamentos na guia Modelagem .

  2. Em Gerenciar relacionamentos, selecione Novo para abrir a caixa de diálogo Criar relacionamento, onde podemos selecionar as tabelas, colunas e quaisquer outras configurações que desejamos para nosso relacionamento .

  3. Na primeira lista suspensa, selecione ProjectHours como a primeira tabela e, em seguida, selecione a coluna Project. Este lado é o lado múltiplo da nossa relação.

  4. Na segunda lista suspensa, CompanyProject é pré-selecionado como a segunda tabela. Selecione a coluna ProjName . Este lado é o único lado da nossa relação.

  5. Aceite os padrões para as opções de relacionamento e selecione OK.

    Screenshot of the Create relationship dialog box.

  6. Na caixa de diálogo Gerenciar relacionamentos, selecione Fechar.

No interesse da divulgação completa, você acabou de criar essa relação da maneira mais difícil. Você poderia ter selecionado Deteção automática na caixa de diálogo Gerenciar relacionamentos. Na verdade, a deteção automática teria criado automaticamente a relação para você quando você carregou os dados se ambas as colunas tivessem o mesmo nome.

Agora, vamos examinar a tabela em nossa tela de relatório novamente.

Screenshot of the Priority and Hours fields selected from the Fields pane with new relationship.

Isso parece muito melhor, não é?

Quando somamos horas por Prioridade, o Power BI Desktop procura cada instância dos valores de cor exclusivos na tabela de pesquisa CompanyProject, procura cada instância de cada um desses valores na tabela ProjectHours e, em seguida, calcula uma soma total para cada valor exclusivo.

Com a deteção automática, você pode nem precisar fazer tanto.

Compreender opções adicionais

Quando uma relação é criada, seja com a deteção automática ou com uma que você cria manualmente, o Power BI Desktop configura automaticamente opções adicionais com base nos dados em suas tabelas. Essas opções de relacionamento adicionais estão localizadas na parte inferior das caixas de diálogo Criar relacionamento e Editar relacionamento.

Screenshot of the lower portion of the Create relationship dialog box showing Cardinality and Cross filter direction options.

O Power BI normalmente define essas opções automaticamente e você não precisará ajustá-las. Mas há várias situações em que você pode querer configurar essas opções por conta própria.

Atualizações automáticas de relacionamento

Pode gerir a forma como o Power BI trata e ajusta automaticamente as relações nos seus relatórios e modelos. Para especificar como o Power BI lida com as opções de relacionamento, selecione Opções de Arquivo>e Opções de Configurações> no Power BI Desktop e selecione Carregamento de Dados no painel esquerdo. As opções para Relações são exibidas.

Screenshot of the Options box showing the Relationships settings in the Data Load tab.

Há três opções que podem ser selecionadas e habilitadas:

  • Importar relações de fontes de dados no primeiro carregamento: essa opção é selecionada por padrão. Quando é selecionado, o Power BI verifica se há relações definidas em sua fonte de dados, como relações de chave estrangeira/chave primária em seu data warehouse. Se essas relações existirem, elas serão espelhadas no modelo de dados do Power BI quando você carregar dados inicialmente. Essa opção permite que você comece rapidamente a trabalhar com seu modelo, em vez de exigir que você mesmo encontre ou defina esses relacionamentos.

  • Atualizar ou excluir relacionamentos ao atualizar dados: essa opção é desmarcada por padrão. Se você selecioná-lo, o Power BI verificará se há alterações nas relações de fonte de dados quando seu modelo semântico for atualizado. Se essas relações forem alteradas ou removidas, o Power BI espelhará essas alterações em seu próprio modelo de dados, atualizando-as ou excluindo-as para corresponder.

    Aviso

    Se você estiver usando segurança em nível de linha que depende das relações definidas, não recomendamos selecionar essa opção. Se remover uma relação em que as suas definições de RLS dependem, o seu modelo poderá tornar-se menos seguro.

  • Deteção automática de novas relações após o carregamento de dados: esta opção é descrita em Deteção automática durante o carregamento.

Atualizações futuras dos dados exigem uma cardinalidade diferente

Normalmente, o Power BI Desktop pode determinar automaticamente a melhor cardinalidade para a relação. Se você precisar substituir a configuração automática, porque sabe que os dados serão alterados no futuro, poderá alterá-los com o controle Cardinality . Vejamos um exemplo em que precisamos selecionar uma cardinalidade diferente.

A tabela CompanyProjectPriority é uma lista de todos os projetos da empresa e sua prioridade. A tabela ProjectBudget é o conjunto de projetos para os quais um orçamento foi aprovado.

EmpresaProjetoPrioridade

ProjName Prioridade
Azul A
Vermelho N
Verde C
Yellow C
Roxo N
Orange C

Orçamento do Projeto

Projetos Aprovados Dotação orçamental Data de atribuição
Azul 40.000 12/1/2012
Vermelho 100.000 12/1/2012
Verde 50 000 12/1/2012

Se criarmos uma relação entre a coluna Projetos Aprovados na tabela ProjectBudget e a coluna ProjectName na tabela CompanyProjectPriority, o Power BI definirá automaticamente Cardinalidade como Um a um (1:1) e Direção do filtro Cruzado como Ambos.

Screenshot of the Create relationship dialog box with Cardinality to One to one (1:1) and Cross filter direction to Both.

A razão pela qual o Power BI faz essas configurações é porque, para o Power BI Desktop, a melhor combinação das duas tabelas é a seguinte:

ProjName Prioridade Dotação orçamental Data de atribuição
Azul A 40.000 12/1/2012
Vermelho N 100.000 12/1/2012
Verde C 50 000 12/1/2012
Yellow C

Roxo N

Orange C

Há uma relação um-para-um entre nossas duas tabelas porque não há valores repetidos na coluna ProjName da tabela combinada. A coluna ProjName é exclusiva, porque cada valor ocorre apenas uma vez, portanto, as linhas das duas tabelas podem ser combinadas diretamente sem qualquer duplicação.

Mas, digamos que você saiba que os dados serão alterados na próxima vez que você atualizá-los. Uma versão atualizada da tabela ProjectBudget agora tem linhas adicionais para os projetos Azul e Vermelho:

Orçamento do Projeto

Projetos Aprovados Dotação orçamental Data de atribuição
Azul 40.000 12/1/2012
Vermelho 100.000 12/1/2012
Verde 50 000 12/1/2012
Azul 80.000 6/1/2013
Vermelho 90,000 6/1/2013

Essas linhas adicionais significam que a melhor combinação das duas tabelas agora tem esta aparência:

ProjName Prioridade Dotação orçamental Data de atribuição
Azul A 40.000 12/1/2012
Vermelho N 100.000 12/1/2012
Verde C 50 000 12/1/2012
Yellow C

Roxo N

Orange C

Azul A 80 000 6/1/2013
Vermelho N 90000 6/1/2013

Nesta nova tabela combinada, a coluna ProjName tem valores de repetição. As duas tabelas originais não terão uma relação um-para-um quando a tabela for atualizada. Neste caso, como sabemos que essas atualizações futuras farão com que a coluna ProjName tenha duplicatas, queremos definir a cardinalidade como Muitos para um (*:1), com o lado muitos em ProjectBudget e o lado um lado em CompanyProjectPriority.

Ajustando a direção do filtro cruzado para um conjunto complexo de tabelas e relações

Para a maioria dos relacionamentos, a direção do filtro cruzado é definida como Ambos. Há, no entanto, algumas circunstâncias mais incomuns em que você pode precisar definir essa opção de forma diferente do padrão. Um exemplo é se você estiver importando um modelo de uma versão mais antiga do Power Pivot, onde cada relação é definida para uma única direção.

A configuração Ambos permite que o Power BI Desktop trate todos os aspetos das tabelas conectadas como se fossem uma única tabela. No entanto, há algumas situações em que o Power BI Desktop não pode definir a direção do filtro cruzado de um relacionamento como Ambos e também manter um conjunto inequívoco de padrões disponíveis para fins de relatório. Se uma direção de filtro cruzado de relacionamento não estiver definida como Ambos, geralmente é porque isso criaria ambiguidade. Se a configuração padrão de filtro cruzado não estiver funcionando para você, tente defini-la para uma tabela específica ou para Ambos.

A filtragem cruzada de direção única funciona para muitas situações. Na verdade, se você importou um modelo do Power Pivot no Excel 2013 ou anterior, todas as relações serão definidas para uma única direção. Direção única significa que as opções de filtragem em tabelas conectadas funcionam na tabela onde o trabalho de agregação está acontecendo. Às vezes, entender a filtragem cruzada pode ser um pouco difícil, então vamos ver um exemplo.

Com a filtragem cruzada de direção única, se você criar um relatório que resume as horas do projeto, poderá optar por resumir (ou filtrar) pela tabela CompanyProject e sua coluna Priority ou pela tabela CompanyEmployee e sua coluna City. No entanto, se você quiser contar o número de funcionários por projeto (uma pergunta menos comum), isso não funcionará. Você obterá uma coluna de valores que são todos iguais. No exemplo a seguir, a direção de filtragem cruzada de ambas as relações é definida como uma única direção: em direção à tabela ProjectHours . No poço Valores, o campo Projeto é definido como Contagem:

Screenshot of the visualization tab used with the Employee and Project fields.

A especificação do filtro fluirá de CompanyProject para ProjectHours (como mostrado na imagem a seguir), mas não fluirá para CompanyEmployee.

Diagram of a cross filtering example with flow from CompanyProject to ProjectHours.

No entanto, se você definir a direção de filtragem cruzada como Ambos, ela funcionará. A configuração Ambos permite que a especificação do filtro flua até CompanyEmployee.

Diagram of a cross filtering example with flow both ways

Com a direção de filtragem cruzada definida como Ambos, nosso relatório agora parece correto:

Screenshot of cross filtering direction set to Both.

A filtragem cruzada em ambas as direções funciona bem para um padrão de relações de tabela, como o padrão mostrado anteriormente. Este esquema é mais comumente chamado de esquema em estrela, assim:

Diagram of cross filtering both directions in star schema.

A direção da filtragem cruzada não funciona bem com um padrão mais geral frequentemente encontrado em bancos de dados, como neste diagrama:

Diagram of cross filtering in both directions on a database pattern.

Se você tiver um padrão de tabela como este, com loops, a filtragem cruzada pode criar um conjunto ambíguo de relações. Por exemplo, se você resumir um campo do TableX e, em seguida, optar por filtrar por um campo no TableY, não ficará claro como o filtro deve percorrer, através da tabela superior ou da tabela inferior. Um exemplo comum desse tipo de padrão é com o TableX como uma tabela de vendas com dados reais e para o TableY ser dados de orçamento. Em seguida, as tabelas no meio são tabelas de pesquisa que ambas as tabelas usam, como divisão ou região.

Tal como acontece com as relações ativas/inativas, o Power BI Desktop não permitirá que uma relação seja definida como Ambos se criar ambiguidade nos relatórios. Existem várias maneiras diferentes de lidar com essa situação. Aqui estão os dois mais comuns:

  • Exclua ou marque as relações como inativas para reduzir a ambiguidade. Em seguida, você poderá definir uma filtragem cruzada de relacionamento como Ambos.
  • Traga uma tabela duas vezes (com um nome diferente na segunda vez) para eliminar loops. Isso torna o padrão de relacionamentos como um esquema de estrelas. Com um esquema em estrela, todas as relações podem ser definidas como Ambos.

Relação ativa errada

Quando o Power BI Desktop cria relações automaticamente, às vezes encontra mais de uma relação entre duas tabelas. Quando essa situação acontece, apenas um dos relacionamentos é definido para ser ativo. A relação ativa serve como a relação padrão, de modo que, quando você escolhe campos de duas tabelas diferentes, o Power BI Desktop pode criar automaticamente uma visualização para você. No entanto, em alguns casos, a relação selecionada automaticamente pode estar errada. Use a caixa de diálogo Gerenciar relacionamentos para definir um relacionamento como ativo ou inativo ou defina o relacionamento ativo na caixa de diálogo Editar relacionamento .

Para garantir que haja uma relação padrão, o Power BI Desktop permite apenas uma única relação ativa entre duas tabelas em um determinado momento. Portanto, você deve primeiro definir o relacionamento atual como inativo e, em seguida, definir o relacionamento que deseja que seja ativo.

Vamos ver uma instância. A primeira tabela é ProjectTickets, e a segunda tabela é EmployeeRole.

Bilhetes de Projeto

Bilhete AbertoPor EnviadoPor Horário Projeto DataSubmeter
1001 Perham, Tom Alan Brewer 22 Azul 1/1/2013
1002 Romano, Daniel Alan Brewer 26 Vermelho 2/1/2013
1003 Roth, Daniel Shu Ito 34 Yellow 12/4/2012
1004 Perham, Tom Alan Brewer 13 Orange 1/2/2012
1005 Romano, Daniel Eli Bowen 29 Roxo 10/1/2013
1006 Roth, Daniel Nuno Bento 35 Verde 2/1/2013
1007 Roth, Daniel David Hamilton 10 Yellow 10/1/2013
1008 Perham, Tom Mu Han 28 Orange 1/2/2012
1009 Romano, Daniel Shu Ito 22 Roxo 2/1/2013
1010 Roth, Daniel Eli Bowen 28 Verde 10/1/2013
1011 Perham, Tom Eli Bowen 9 Azul 10/15/2013

Função do Funcionário

Empregado Função
Nuno Bento Gestor de Projeto
Eli Bowen Líder de Projeto
Alan Brewer Gestor de Projeto
David Hamilton Líder de Projeto
Mu Han Líder de Projeto
Shu Ito Líder de Projeto
Perham, Tom Patrocinador do Projeto
Romano, Daniel Patrocinador do Projeto
Roth, Daniel Patrocinador do Projeto

Na verdade, existem duas relações aqui:

  • Entre Employee na tabela EmployeeRole e SubmittedBy na tabela ProjectTickets.
  • Entre OpenedBy na tabela ProjectTickets e Employee na tabela EmployeeRole.

Screenshot of a two-relationship example.

Se adicionarmos ambas as relações ao modelo (OpenedBy primeiro), a caixa de diálogo Gerenciar relações mostrará que OpenedBy está ativo:

Screenshot of a OpenedBy active in the Manage relationships dialog box.

Agora, se criarmos um relatório que usa os campos Função e Funcionário de EmployeeRole e o campo Horas de ProjectTickets em uma visualização de tabela na tela de relatório, veremos apenas patrocinadores de projeto porque eles são os únicos que abriram um tíquete de projeto.

Screenshot shows the Employee, Role, and Hours fields selected.

Podemos alterar a relação ativa e obter SubmittedBy em vez de OpenedBy. Em Gerenciar relacionamentos, desmarque a relação ProjectTickets(OpenedBy) para EmployeeRole(Employee) e marque a relação EmployeeRole(Employee) para Project Tickets(SubmittedBy).

Screenshot of changing the active relationship in the Manage relationship dialog box.

Veja todos os seus relacionamentos no modo de exibição Relacionamento

Às vezes, seu modelo tem várias tabelas e relações complexas entre elas. O modo de exibição de relacionamento no Power BI Desktop mostra todos os relacionamentos em seu modelo, sua direção e cardinalidade em um diagrama fácil de entender e personalizável.

Para saber mais, consulte Trabalhar com o modo de exibição Relacionamento no Power BI Desktop.

Resolução de Problemas

Esta seção fornece orientação e informações de solução de problemas ao trabalhar com relacionamentos no Power BI.

As relações entre campos não podem ser determinadas

O Power BI tenta mostrar dados relevantes em elementos visuais inferindo as relações do modelo que está sendo usado. Às vezes, essas inferências não são óbvias, e você pode se surpreender ao ver um erro em seu visual, indicando que não há relação entre certas colunas.

Para explicar como o Power BI determina se os campos estão relacionados, vamos usar um modelo de exemplo para ilustrar alguns cenários nas seções a seguir. A imagem a seguir mostra o modelo de exemplo que usaremos nos cenários de exemplo.

Screenshot of a sample model used in troubleshooting scenarios.

Cenário 1: Esquema de estrela tradicional e nenhuma restrição de medida fornecida. Referindo-se ao modelo de exemplo na imagem anterior, vamos olhar primeiro para a metade direita das imagens com as tabelas Fornecedor - Compras - Produto . Este exemplo é um esquema em estrela tradicional com a tabela Fact (Compras) e duas tabelas Dimension (Product e Vendor). A relação entre as tabelas de dimensões e a tabela de fatos é de 1 a Muitos (um produto corresponde a muitas compras, um fornecedor corresponde a muitas compras). Neste tipo de esquema, podemos responder a perguntas como Que vendas temos para o produto X? e Que vendas temos para o fornecedor Y? e Que produtos o fornecedor Y vende?

Se quisermos correlacionar Produtos e Fornecedores, podemos fazê-lo olhando para a tabela Compras para ver se há uma entrada com o mesmo produto e fornecedor. Uma consulta de exemplo pode ser semelhante ao exemplo a seguir:

Correlate Product[Color] with Vendor[Name] where CountRows(Purchases)>0

A é uma restrição implícita que o where CountRows(Purchases)>0 Power BI adicionaria para garantir que os dados relevantes sejam retornados. Ao fazer essa correlação por meio da tabela Compras , podemos retornar emparelhamentos de Produto-Fornecedor que tenham pelo menos uma entrada em uma tabela de fatos, emparelhamentos que façam sentido do ponto de vista dos dados. Você pode esperar que quaisquer combinações absurdas de Produto-Fornecedor para as quais nunca houve uma venda (o que seria inútil para análise) não serão exibidas.

Cenário 2: Esquema de estrela tradicional e restrição de medida fornecida. No exemplo anterior no Cenário 1, se o usuário fornecer uma restrição na forma de coluna resumida (Soma/Média/Contagem de Qty de Compra, por exemplo) ou uma medida de modelo (Contagem Distinta de VendID), o Power BI poderá gerar uma consulta na forma do exemplo a seguir:

Correlate Product[Color] with Vendor[Name] where MeasureConstraint is not blank

Nesse caso, o Power BI tenta retornar combinações que tenham valores significativos para a restrição fornecida pelo usuário (não em branco). O Power BI não precisa também adicionar sua própria restrição implícita de CountRows(Purchases)>0, como o que foi feito como no Cenário 1 anterior, porque a restrição fornecida pelo usuário é suficiente.

Cenário 3: Esquema sem estrela e sem restrição de medida fornecida. Neste cenário, focamos a nossa atenção no centro do modelo, onde temos as tabelas Vendas - Produto - Compras, onde temos uma tabela de dimensão (Produto) e duas tabelas de factos (Vendas, Compras). Como este exemplo não é um esquema em estrela, não podemos responder ao mesmo tipo de perguntas que tínhamos no Cenário 1. Digamos que tentamos correlacionar Compras e Vendas, uma vez que Compras tem uma relação de Muitos para 1 com o Produto, e o Produto tem uma relação de 1 para Muitos com as Vendas. Vendas e Compras são indiretamente Muitas para Muitos. Podemos vincular um Produto a muitas Compras e um Produto a muitas vendas, mas não podemos vincular uma Venda a muitas Compras ou vice-versa. Só podemos associar muitas Compras a muitas Vendas.

Nessa situação, se tentarmos combinar Purchase[VenID] e Sales[CustID] em um visual, o Power BI não terá uma restrição concreta que possa aplicar, devido à relação Muitos para Muitos entre essas tabelas. Embora possa haver restrições personalizadas (não necessariamente decorrentes das relações estabelecidas no modelo) que podem ser aplicadas a vários cenários, o Power BI não pode inferir uma restrição padrão apenas com base nas relações. Se o Power BI tentasse retornar todas as combinações das duas tabelas, criaria uma grande junção cruzada e retornaria dados não relevantes. Em vez disso, o Power BI gera um erro no visual, como o seguinte.

Screenshot of an error dialog when relationship can’t be inferred. Alternatively, Screenshot of an error dialog where relationship isn’t inferred.

Cenário 4: Esquema não-estrela e restrição de medida fornecida. Se pegarmos o exemplo do Cenário 3 e adicionarmos uma restrição fornecida pelo usuário na forma de uma coluna resumida (Count of Product[ProdID], por exemplo) ou uma medida de modelo (Sales[Total Qty]), o Power BI poderá gerar uma consulta na forma de Correlate Purchase[VenID] e Sales[CustID] onde MeasureConstraint não está em branco.

Nesse caso, o Power BI respeita a restrição do usuário como sendo a única restrição que o Power BI precisa aplicar e retorna as combinações que produzem valores não em branco para ele. O usuário guiou o Power BI para o cenário desejado e o Power BI aplica a orientação.

Cenário 5: Quando uma restrição de medida é fornecida, mas está parcialmente relacionada às colunas. Há casos em que a restrição de medida fornecida pelo usuário não está totalmente relacionada a todas as colunas no visual. Uma medida modelo sempre relaciona tudo. O Power BI trata esse cenário como uma caixa preta ao tentar encontrar relações entre colunas no visual e pressupõe que o usuário saiba o que está fazendo ao usá-lo. No entanto, colunas resumidas na forma de Soma, Média e resumos semelhantes escolhidos na interface do usuário podem ser relacionadas a apenas um subconjunto das colunas/tabelas usadas no visual com base nas relações da tabela à qual essa coluna pertence. Como tal, a restrição aplica-se a alguns pares de colunas, mas não a todas. Nesse caso, o Power BI tenta localizar restrições padrão, ele pode ser aplicado às colunas que não estão relacionadas pela restrição fornecida pelo usuário (como no Cenário 1). Se o Power BI não conseguir encontrar nenhum, o seguinte erro será retornado.

Screenshot of an error dialog when Power BI can’t find default constraints.

Resolução de erros de relacionamento

Quando vir o erro Não é possível determinar relações entre os campos, pode seguir os seguintes passos para tentar resolver o erro:

  1. Verifique o seu modelo. Ele está configurado adequadamente para os tipos de perguntas que você deseja responder a partir de sua análise? É possível alterar algumas das relações entre tabelas? Você pode evitar a criação de um indireto Muitos para Muitos?

    Considere converter seu esquema de forma V reversa em duas tabelas e use uma relação direta Muitos para Muitos entre elas, conforme descrito em Aplicar muitas e muitas relações no Power BI Desktop.

  2. Adicione uma restrição ao visual na forma de uma coluna resumida ou uma medida de modelo.

  3. Se uma coluna resumida for adicionada e ainda houver um erro, considere usar uma medida de modelo.

Para obter mais informações sobre modelos e relacionamentos, consulte os seguintes artigos: