Compartilhar via


Criar e gerenciar relações no Power BI Desktop

Quando você tem várias tabelas, é provável que realize algumas análises usando dados de todas essas tabelas. As relações entre essas tabelas são necessárias para calcular os resultados com precisão e exibir as informações corretas em seus relatórios. Na maioria dos casos, você não terá que fazer nada. O recurso de detecção automática faz isso para você. No entanto, às vezes você pode precisar criar relações por conta própria ou fazer alterações a uma relação. De qualquer modo, é importante compreender as relações no Power BI Desktop e compreender como criá-las e editá-las.

Detectar automaticamente durante o carregamento

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 relação Cardinalidade, Direção de filtro cruzado e Tornar essa relação ativa são definidas automaticamente. O Power BI Desktop procura nomes de colunas nas tabelas que você está consultando para determinar se há alguma relação em potencial. Se houver, essas relações serão criadas automaticamente. Caso o Power BI Desktop não possa determinar com um alto nível de confiança que há uma correspondência, ele não criará a relação. Porém, você ainda pode usar a caixa de diálogo Gerenciar relações para criar ou editar relações manualmente.

Criar um relacionamento com detecção automática

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

Animação mostrando como criar uma relação com a detecção automática.

Criar uma relação manualmente

  1. Na guia Modelagem, selecione Gerenciar relações>Novo.

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

  3. Na segunda lista suspensa tabela, selecione a outra tabela que você deseja ter na relação. Selecione a outra coluna que você deseja usar e, em seguida, escolha OK.

    Animação mostrando como criar uma relação manual.

Por padrão, o Power BI Desktop configura automaticamente as opções Cardinalidade (direção), Direção de filtro cruzado e Tornar essa relação ativa para sua nova relação. No entanto, você poderá alterar essas configurações se necessário. Para obter mais informações, confira 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 uma relação precisa ter uma lista distinta e exclusiva de valores de chave, que é um requisito comum para todas as tecnologias de banco de dados relacional.

Se você encontrar esse erro, haverá duas maneiras de corrigir o problema:

  • Use Remover Duplicatas para criar uma coluna com valores exclusivos. A desvantagem dessa abordagem é que você poderá perder informações quando as linhas duplicadas forem removidas. Geralmente, uma chave (linha) é duplicada por um bom motivo.
  • Adicione uma tabela intermediária composta pela lista de valores de chave distintos no modelo, que, em seguida, é vinculado às duas colunas originais na relação.

Para saber mais, consulte esta postagem em blog.

Como alternativa, nos layouts de diagrama da Exibição de modelo, você pode arrastar e soltar uma coluna de uma tabela em 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 é Editando relações no painel Propriedades na Exibição de modelo, em que você pode selecionar qualquer linha entre duas tabelas para ver as opções de relação no painel Propriedades. Expanda o painel Propriedades para ver as opções de relação.

Captura de tela do ajuste de relações no painel de propriedades.

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

O outro método para editar uma relação é usar a Caixa de diálogo do editor de relações, que você pode abrir de várias maneiras de dentro do Power BI Desktop. A seguinte lista mostra diferentes maneiras de abrir a Caixa de diálogo do editor de relações:

Na Exibição de relatório, faça 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, a faixa de opções Ferramentas de tabela>Gerenciar relações, selecione a relação e, em seguida, Editar.

Na exibição de Dados, selecione a faixa de opções Ferramentas de tabela>Gerenciar relações, selecione a relação e, em seguida, escolha Editar.

Na exibição de Modelo, faça um destes procedimentos:

  • Selecione a faixa de opções Início>Gerenciar relações, escolha a relação e 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 escolha Abrir editor de relações no painel Propriedades.

Por fim, você também pode editar uma relação em qualquer exibição, clicar com o botão direito do mouse ou selecionar as reticências para acessar o menu de contexto de qualquer tabela e, em seguida, selecionar Gerenciar relações, selecionar a relação e selecionar Editar

A imagem a seguir mostra uma captura de tela da janela Editar relação.

Captura de tela da janela editar relação.

Editando relações usando métodos diferentes

Usar a Caixa de diálogo de edição de relações é uma experiência mais guiada para editar relações no Power BI e está em versão prévia. 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 seleções de cardinalidade e filtro cruzado apropriadas.

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 em que pode escolher, não recebe uma visualização de dados e as escolhas de relação 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 uma relação, o que pode ser importante para cenários de Big Data, especialmente ao usar conexões DirectQuery. Relações criadas usando o painel Propriedades também podem ser mais avançadas do que relações que podem ser criadas na Caixa de diálogo de edição de relações.

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

Relações selecionadas individualmente ou em conjunto também podem ser excluídas pressionando Delete no teclado. Você não pode desfazer a ação de exclusão, portanto, uma caixa de diálogo solicita que você confirme a exclusão das relações.

Importante

O recurso de edição de relações no painel de propriedades está em versão prévia. Durante a versão prévia, a funcionalidade e a documentação podem ser alteradas. Você precisa habilitar esse recurso no Power BI Desktop acessando Arquivo > Opções e configurações > Opções > Versão prévia do recurso e, na seção GLOBAL, marcando a caixa de seleção ao lado do painel Relação.

Configurar mais opções

Quando cria ou edita uma relação, você pode configurar mais opções. Por padrão, o Power BI Desktop configura automaticamente mais opções com base em uma melhor estimativa, que pode ser diferente para cada relacionamento com base nos dados das colunas.

Cardinalidade

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

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

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

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

Muitos para muitos (*:*): com os modelos compostos, você pode estabelecer uma relação de muitos para muitos entre tabelas, o que elimina os requisitos para valores exclusivos nas tabelas. Ela também remove as soluções alternativas anteriores, como introduzir novas tabelas somente para estabelecer relações. Para obter mais informações, confira Relações com uma cardinalidade muitos para muitos.

Para obter mais informações sobre quando alterar a cardinalidade, confira 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:

Ambas: para fins de filtragem, ambas as tabelas são tratadas como se fossem uma tabela. A configuração Ambas é ideal para uma tabela que tem muitas tabelas de pesquisa em torno dela. Um exemplo é uma tabela de dados reais de vendas com uma tabela de pesquisa por departamento. Essa configuração costuma ser 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 têm tabelas de pesquisa (com algumas em comum), não será vantajoso 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. E a tabela de departamento é conectada tanto à tabela de vendas quanto à de alocação. Evite a configuração Ambas para esse tipo de configuração.

Único: a descrição padrão mais comum, o que significa que as opções de filtragem em tabelas conectadas funcionam na tabela na qual os valores estão sendo agregados. Se você importar uma tabela do Power Pivot no Excel 2013 ou um 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, confira Noções básicas sobre opções adicionais.

Ativar esta relação

Quando marcada, a relação serve como a relação ativa padrão. Em casos nos quais 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 criar uma relação específica ativa, confira Noções básicas sobre opções adicionais.

Noções básicas sobre relações

Depois de conectar duas tabelas com uma relação, você pode trabalhar com os dados nas duas tabelas como se elas fossem apenas uma. Você fica livre de ter que se preocupar com detalhes da relação ou com mesclar essas tabelas em uma tabela antes de importá-las. Em muitas situações, o Power BI Desktop pode criar relações automaticamente para você. No entanto, se o Power BI Desktop não puder determinar com alto grau de certeza que deve existir uma relação entre duas tabelas, ele não criará automaticamente a relação. Nesse caso, você deve fazer isso.

Vamos conferir um pequeno tutorial, para mostrar melhor como funcionam as relações no Power BI Desktop.

Dica

Você pode concluir esta lição por conta própria:

  1. Copie a tabela ProjectHours a seguir em uma planilha 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, escolha Design de Tabela>Nome da Tabela e, em seguida, insira ProjectHours.
  4. Faça o mesmo para a tabela CompanyProject.
  5. Importe os dados por meio de Obter Dados no Power BI Desktop. Selecione as duas tabelas como uma fonte de dados e, em seguida, selecione Carregar.

A primeira tabela, ProjectHours, é um registro de tíquetes de trabalho que gravam o número de horas que uma pessoa já trabalhou em um projeto específico.

ProjectHours

Ticket SubmittedBy Hours Project DateSubmit
1001 Alan Brewer 22 Azul 1/1/2013
1002 Alan Brewer 26 Vermelho 2/1/2013
1003 Shu Ito 34 Amarelo 1242012
1004 Alan Brewer 13 Laranja 1/2/2012
1005 Eli Bowen 29 Roxo 01/10/2013
1006 Nuno Bento 35 Verde 2/1/2013
1007 David Hamilton 10 Amarelo 01/10/2013
1008 Mu Han 28 Laranja 1/2/2012
1009 Shu Ito 22 Roxo 2/1/2013
1010 Eli Bowen 28 Verde 01/10/2013
1011 Eli Bowen 9 Azul 10/15/2013

Essa segunda tabela, CompanyProject, é uma lista de projetos aos quais é atribuída uma prioridade: A, B ou C.

CompanyProject

ProjName Priority
Azul A
Vermelho B
Verde C
Amarelo C
Roxo B
Laranja C

Observe que cada tabela tem uma coluna de projeto. Cada uma é nomeada de modo ligeiramente diferente, mas os valores parecem ser os mesmos. Essa diferença é importante e retornaremos a esse assunto em breve.

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

Captura de tela dos campos Prioridade e Horas selecionados no painel Campos.

Se observarmos nossa tabela na tela Relatório, veremos que o número de horas é 256 para cada projeto, que é também o total. Claramente, esse número não está correto. Por que? É porque não podemos calcular uma soma total dos valores de uma tabela (Hours na tabela Project), dividida por valores em outra tabela (Priority na tabela CompanyProject) sem que exista uma relação entre essas duas tabelas.

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

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

Por que essas colunas? Bem, se observarmos a coluna Projeto na tabela ProjectHours, veremos valores como Azul, Vermelho, Amarelo, Laranja e assim por diante. Na verdade, podemos ver várias linhas que têm o mesmo valor. Assim, temos muitos valores de cor para Project.

Se observarmos a coluna ProjName na tabela CompanyProject, veremos que há somente um de cada um dos valores de cor para o nome do projeto. Cada valor de cor nesta tabela é exclusivo e isso é importante, porque podemos criar uma relação entre essas duas tabelas. Nesse caso, uma relação de tipo muitos para um. Em uma relação muitos para um, pelo menos uma coluna em uma das tabelas deve conter valores exclusivos. Há mais algumas opções para algumas relações, que veremos posteriormente. 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 relações, na guia Modelagem.

  2. Em Gerenciar relações, clique em Nova para abrir a caixa de diálogo Criar relação, na qual podemos selecionar tabelas, colunas e outras configurações desejadas para nossa relação.

  3. Na primeira lista suspensa, selecione ProjectHours como a primeira tabela e, em seguida, selecione a coluna Projeto. Este é o lado *muitos da nossa relação.

  4. Na segunda lista suspensa, CompanyProject é pré-selecionada como a segunda tabela. Selecione a coluna ProjName. Este é o lado um de nossa relação.

  5. Aceite os padrões para as opções de relação e, em seguida, selecione OK.

    Captura de tela da caixa de diálogo Criar relação.

  6. Na caixa de diálogo Gerenciar relações, selecione Fechar.

Buscando uma divulgação completa, acabamos criando essa relação da maneira mais difícil. Você poderia ter selecionado Detecção automática na caixa de diálogo Gerenciar relações. Na verdade, a detecçã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 novamente a tabela em nossa tela de relatório.

Captura de tela dos campos Prioridade e Horas selecionados no painel Campos com a nova relação.

Agora está muito melhor, não é?

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

Com a detecção automática, talvez você nem precise fazer tudo isso.

Noções básicas sobre opções adicionais

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

Captura de tela da parte inferior da caixa de diálogo Criar relação mostrando as opções de Cardinalidade e Direção do filtro cruzado.

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

Atualizações automáticas de relação

Você pode gerenciar como o Power BI trata e ajusta automaticamente as relações em seus relatórios e modelos. Para especificar como o Power BI trata as opções de relações, selecione Arquivo>Opções e configurações>Opções no Power BI Desktop, em seguida, selecione Carregamento de Dados no painel esquerdo. As opções para Relações aparecem.

Captura de tela da caixa Opções mostrando as Configurações de relações na guia Carregamento de Dados.

Há três opções disponíveis para selecionar e habilitar:

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

  • Atualize ou exclua relacionamentos ao atualizar os dados: esta opção está desmarcada por padrão. Se você selecioná-lo, o Power BI verificará se há alterações nas relações de fonte de dados quando o modelo semântico é atualizado. Quando essas relações são alteradas ou removidas, o Power BI espelha essas alterações no respectivo modelo de dados, atualizando-as ou excluindo-as para correspondência.

    Aviso

    Se você está usando a segurança em nível de linha que se baseia nas relações definidas, não é recomendável selecionar essa opção. Se você remover um relacionamento do qual se baseiam as configurações da RLS, o modelo poderá se tornar menos seguro.

  • Detectar automaticamente novas relações após os dados serem carregados: essa opção é descrita em Detecçã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 precisar substituir a configuração automática por saber que os dados serão alterados no futuro, você poderá alterá-la com o controle Cardinalidade. Vejamos um exemplo em que precisamos selecionar uma cardinalidade diferente.

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

CompanyProjectPriority

ProjName Priority
Azul A
Vermelho B
Verde C
Amarelo C
Roxo B
Laranja C

Tabela ProjectBudget

Approved Projects BudgetAllocation AllocationDate
Azul 40.000 1212012
Vermelho 100.000 1212012
Verde 50.000 1212012

Se criarmos uma relação entre a coluna Approved Projects na tabela ProjectBudget e a coluna ProjectName na tabela CompanyProjectPriority, o Power BI definirá automaticamente a Cardinalidade como Um para um (1:1) e a Direção do filtro cruzado como Ambas.

Captura de tela da caixa de diálogo Criar relação com Cardinalidade como um para um (1:1) e Direção do filtro cruzado como Ambos.

O motivo pelo qual o Power BI faz essas configurações é que, para o Power BI Desktop, a melhor combinação das duas tabelas é a seguinte:

ProjName Priority BudgetAllocation AllocationDate
Azul A 40.000 1212012
Vermelho B 100.000 1212012
Verde C 50.000 1212012
Amarelo C
Roxo B
Laranja C

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

Mas digamos que você saiba que os dados mudarão 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:

ProjectBudget

Approved Projects BudgetAllocation AllocationDate
Azul 40.000 1212012
Vermelho 100.000 1212012
Verde 50.000 1212012
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 é assim:

ProjName Priority BudgetAllocation AllocationDate
Azul A 40.000 1212012
Vermelho B 100.000 1212012
Verde C 50.000 1212012
Amarelo C
Roxo B
Laranja C
Azul A 80000 6/1/2013
Vermelho B 90000 6/1/2013

Nessa nova tabela combinada, a coluna ProjName tem valores repetidos. As duas tabelas originais não terão uma relação de tipo um para um depois que a tabela for atualizada. Nesse caso, como sabermos que as atualizações futuras farão com que a coluna ProjName tenha duplicatas, queremos definir a Cardinalidade como Muitos Para Um (*:1), em que muitos está no lado do ProjectBudget e um está no lado do CompanyProjectPriority.

Ajuste da direção de filtro cruzado para um conjunto complexo de tabelas e relações

Para a maioria das relações, a direção do filtro cruzado é definida como Ambas. No entanto, há algumas circunstâncias mais incomuns em que talvez seja necessário definir essa opção de modo diferente do padrão. Um exemplo é quando você está importando um modelo de uma versão mais antiga do Power Pivot, em que todas as relações são definidas como de direção única.

A configuração Ambas habilita o Power BI Desktop a tratar todos os aspectos das tabelas conectadas como se elas fossem uma tabela. Há algumas situações, porém, em que o Power BI Desktop não pode definir a direção de filtro cruzado da relação como Ambas e, ao mesmo tempo, manter um conjunto inequívoco de padrões disponíveis para fins de relatório. Se a direção de filtro cruzado de uma relação não é definida como Ambas, isso geralmente ocorre porque tal configuração geraria ambiguidade. Se a configuração padrão de filtro cruzado não está funcionando para você, você pode defini-la em direção a uma tabela específica ou Ambas.

A filtragem cruzada em uma única direção funciona em muitas situações. Na verdade, se você importar um modelo do PowerPivot no Excel 2013 ou anterior, todas as relações estarão definidas para uma única direção. O uso de uma única direção significa que as opções de filtragem, em tabelas conectadas, funcionam na tabela na qual está ocorrendo trabalho de agregação de valores. Às vezes compreender a filtragem cruzada pode ser um pouco difícil, portanto, vamos examinar um exemplo.

Com filtragem cruzada de direção única, se você criar um relatório que resume as horas de projeto, poderá escolher resumir (ou filtrar) pela tabela CompanyProject e sua coluna Priority ou pela tabela CompanyEmployee e sua coluna City. Se, no entanto, 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 todos iguais. No seguinte exemplo, a direção da filtragem cruzada de ambas as relações está definida como uma direção: em direção à tabela ProjectHours. Em Valores, o campo Projeto é definido como Contagem:

Captura de tela da guia de visualização usada com os campos Funcionário e Projeto.

A especificação de filtro fluirá de CompanyProject para ProjectHours (conforme mostra a imagem a seguir), porém, não fluirá até CompanyEmployee.

Diagrama de um exemplo de filtragem cruzada com fluxo de CompanyProject para ProjectHours.

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

Diagrama de um exemplo de filtragem cruzada com fluxo nos dois sentidos

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

Captura de tela da direção da filtragem cruzada definida como Ambos.

A filtragem cruzada em ambos os trajetos funciona bem para um padrão de relações de tabela como o padrão mostrado anteriormente. Esse esquema é mais comumente chamado de um esquema em estrela, como esse:

Diagrama da filtragem cruzada em ambas as direções no esquema em estrela.

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

Diagrama da filtragem cruzada em ambas as direções em um padrão de banco de dados.

Se você tiver um padrão de tabela como este, com loops, então a filtragem cruzada pode criar um conjunto ambíguo de relações. Por exemplo, se você realiza a soma de um campo da Tabela X e, em seguida, opta por filtrar por um campo na Tabela Y, não fica claro o percurso que o filtro deve fazer: pela tabela superior ou pela inferior. Um exemplo comum para esse tipo de padrão é que a TableX seja uma tabela Sales com os dados efetivos e que TableY seja de dados de orçamento. Em seguida, as tabelas no meio são tabelas de pesquisa usadas por ambas as tabelas, como divisão ou região.

Como ocorre com relações ativas/inativas, o Power BI Desktop não permitirá que uma relação seja definida como Ambas se isso gerar ambiguidade em relatórios. Há várias maneiras de lidar com essa situação. Aqui estão as duas mais comuns:

  • Excluir ou marcar relações como inativas para reduzir a ambiguidade. Em seguida, talvez você possa definir a filtragem cruzada de uma relação como Ambas.
  • Inclua uma tabela duas vezes (com um nome diferente na segunda vez) para eliminar os loops. Fazer isso torna o padrão de relações similar a um esquema em estrela. Com um esquema em estrela, todas as relações podem ser definidas como Ambas.

Relação ativa errada

Quando o Power BI Desktop cria relações automaticamente, ele às vezes encontra mais de uma relação entre duas tabelas. Quando essa situação acontece, apenas uma das relações é definida como ativa. A relação ativa serve como a relação padrão para que, quando você escolher campos de duas tabelas diferentes, o Power BI Desktop possa 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 relações para definir uma relação como ativa ou inativa ou defina a relação ativa na caixa de diálogo Editar relação.

Para garantir que exista uma relação padrão, o Power BI Desktop permite apenas uma relação ativa entre duas tabelas em um determinado momento. Portanto, você deve primeiro definir a relação atual como inativa e, em seguida, definir como ativa a relação desejada.

Vejamos um exemplo. A primeira tabela é ProjectTickets, a segunda tabela é EmployeeRole.

ProjectTickets

Ticket OpenedBy SubmittedBy Hours Project DateSubmit
1001 Tom Perham Alan Brewer 22 Azul 1/1/2013
1002 Daniel Romano Alan Brewer 26 Vermelho 2/1/2013
1003 Daniel Roth Shu Ito 34 Amarelo 1242012
1004 Tom Perham Alan Brewer 13 Laranja 1/2/2012
1005 Daniel Romano Eli Bowen 29 Roxo 01/10/2013
1006 Daniel Roth Nuno Bento 35 Verde 2/1/2013
1007 Daniel Roth David Hamilton 10 Amarelo 01/10/2013
1008 Tom Perham Mu Han 28 Laranja 1/2/2012
1009 Daniel Romano Shu Ito 22 Roxo 2/1/2013
1010 Daniel Roth Eli Bowen 28 Verde 01/10/2013
1011 Tom Perham Eli Bowen 9 Azul 10/15/2013

EmployeeRole

Employee Função
Nuno Bento Gerente de projeto
Eli Bowen Líder de projeto
Alan Brewer Gerente de projeto
David Hamilton Líder de projeto
Mu Han Líder de projeto
Shu Ito Líder de projeto
Tom Perham Patrocinador de projeto
Daniel Romano Patrocinador de projeto
Daniel Roth Patrocinador de 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.

Captura de tela de um exemplo de duas relações.

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

Captura de tela de um OpenedBy ativo na caixa de diálogo Gerenciar relações.

Agora, se criarmos um relatório que usa os campos Role e Employee de EmployeeRole e o campo Hours de ProjectTickets em uma visualização de tabela na tela Relatório, veremos apenas patrocinadores de projeto, porque eles são os únicos a terem aberto um tíquete de projeto.

A captura de tela mostra os campos Funcionário, Função e Horas selecionados.

Podemos alterar a relação ativa e obter SubmittedBy, em vez de OpenedBy. Em Gerenciar relações, desmarcamos a relação entre ProjectTickets(OpenedBy) e EmployeeRole(Employee) e, em seguida, marcamos EmployeeRole(Employee) como a relação Project Tickets(SubmittedBy) .

Captura de tela da alteração da relação ativa na caixa de diálogo Gerenciar relações.

Ver todas as relações na exibição Relação

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

Para saber mais, confira Trabalhar com a exibição Relação no Power BI Desktop.

Solução de problemas

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

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

O Power BI tenta mostrar os dados relevantes nos 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 no visual, indicando que não há relação entre determinadas 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.

Modelo de exemplo usado nos cenários de solução de problemas.

Cenário 1: esquema em estrela convencional e sem restrição de medida. No que se refere ao modelo de exemplo na imagem anterior, vamos examinar primeiro a metade direita das imagens com as tabelas Fornecedor – Compras – Produto. Este exemplo é um esquema em estrela convencional com a tabela de Fatos (Compras) e duas tabelas de Dimensões (Produto e Fornecedor). A relação entre as tabelas de dimensões e a tabela de fatos é de Um para Muitos (um produto corresponde a muitas compras, um fornecedor corresponde a muitas compras). Nesse tipo de esquema, podemos responder perguntas como Quais vendas temos para o produto X?, Quais vendas temos para o Fornecedor Y? e Quais produtos o Fornecedor Y vende?

Se quisermos correlacionar Produtos e Fornecedores, podemos fazer isso examinando a tabela Compras, para ver se há uma entrada com o mesmo produto e fornecedor. A consulta de exemplo pode ser semelhante ao seguinte exemplo:

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

A where CountRows(Purchases)>0 é uma restrição implícita que o Power BI adicionaria para garantir que dados relevantes sejam retornados. Ao fazer essa correlação por meio da tabela Compras, podemos retornar emparelhamentos de Produto-Fornecedor que têm pelo menos uma entrada em uma tabela de fatos. Esses emparelhamentos fazem sentido da perspectiva de dados. Pode-se esperar que não sejam exibidas combinações sem sentido de Produto-Fornecedor, para as quais nunca houve uma venda (o que seria inútil para análise).

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

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

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

Cenário 3: esquema que não é em estrela e sem restrição de medida. Nesse cenário, concentramos nossa atenção no centro do modelo, em que temos as tabelas Vendas – Produto – Compras, nas quais temos uma tabela de dimensões (Produto) e duas Tabelas de Fatos (Vendas, Compras). Como este exemplo não é um esquema em estrela, não podemos responder o mesmo tipo de perguntas que tínhamos no Cenário 1. Digamos que tentamos correlacionar Compras e Vendas. Como Compras tem uma relação de Muitos para Um com o Produto e Produto tem uma relação de Um para Muitos com Vendas. Vendas e Compras são indiretamente Muitos 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 vincular 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 ser aplicada, devido à relação de Muitos para Muitos entre essas tabelas. Embora possa haver restrições personalizadas (não necessariamente decorrentes das relações estabelecidas no modelo) que possam ser aplicadas a vários cenários, o Power BI não pode inferir uma restrição padrão exclusivamente com base nas relações. Se o Power BI tentasse retornar todas as combinações das duas tabelas, criaria uma junção cruzada grande e retornaria dados irrelevantes. Em vez disso, o Power BI gera um erro no visual, como o seguinte.

Captura de tela de uma caixa de diálogo de erro quando a relação não pode ser inferida. Como alternativa, captura de tela de uma caixa de diálogo de erro em que a relação não é inferida.

Cenário 4: esquema que não é em estrela e com restrição de medida. Se pegarmos o exemplo do Cenário 3 e adicionarmos uma restrição fornecida pelo usuário na forma de uma coluna resumida (Contagem de Produtos[ProdID], por exemplo) ou uma medida de modelo (Vendas[Quantidade total]), o Power BI poderá gerar uma consulta na forma de Compras Correlacionadas[VenID] e Vendas[CustID] em que MeasureConstraint não esteja em branco.

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

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 de modelo sempre relaciona tudo. O Power BI trata esse cenário como uma caixa preta, ao tentar encontrar relações entre as colunas no visual, e pressupõe que o usuário sabe o que está fazendo ao usá-la. No entanto, as colunas resumidas na forma de Soma, Média e resumos semelhantes escolhidos na interface do usuário podem estar relacionadas apenas a um subconjunto das colunas/tabelas usadas no visual com base nas relações da tabela à qual essa coluna pertence. Dessa forma, a restrição se aplica a alguns emparelhamentos de colunas, mas não a todos. Nesse caso, o Power BI tenta encontrar restrições padrão que possam ser aplicadas às colunas que não estão relacionadas à restrição fornecida pelo usuário (como no Cenário 1). Se o Power BI não conseguir localizar nenhuma, o erro a seguir será retornado.

Captura de tela de uma caixa de diálogo de erro quando o Power BI não consegue encontrar restrições padrão.

Resolução de erros de relação

Ao encontrar o erro Não é possível determinar as relações entre os campos, você pode executar as seguintes etapas para tentar resolver o erro:

  1. Verifique o modelo. Ele foi configurado adequadamente para os tipos de perguntas que você deseja que sejam respondidas na análise? Você pode alterar algumas das relações entre as tabelas? Você pode evitar a criação de uma relação indireta de Muitos para Muitos?

    Converta o esquema em forma de V invertido nas duas tabelas e use uma relação direta de Muitos para Muitos entre elas, conforme descrito em Aplicar relações de muitos para muitos 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, use uma medida de modelo.

Para obter mais informações sobre modelos e relações, confira os seguintes artigos: