Criar e gerenciar relações no Power BI DesktopCreate and manage relationships in Power BI Desktop

Quando você importa várias tabelas, é provável que você realize algumas análises usando dados de todas essas tabelas.When you import multiple tables, chances are you'll do some analysis using data from all those tables. 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.Relationships between those tables are necessary to accurately calculate results and display the correct information in your reports. O Power BI Desktop torna fácil a criação dessas relações.Power BI Desktop makes creating those relationships easy. Na verdade, na maioria dos casos, você não precisará fazer nada, o recurso de detecção automática fará tudo por você.In fact, in most cases you won’t have to do anything, the autodetect feature does it for you. No entanto, às vezes você pode precisar criar relações por conta própria ou fazer alterações a uma relação.However, sometimes you might have to create relationships yourself, or need to make changes to a relationship. De qualquer modo, é importante compreender as relações no Power BI Desktop e compreender como criá-las e editá-las.Either way, it’s important to understand relationships in Power BI Desktop and how to create and edit them.

Detectar automaticamente durante o carregamentoAutodetect during load

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ê.If you query two or more tables at the same time, when the data is loaded, Power BI Desktop attempts to find and create relationships for you. As opções de relação Cardinalidade, Direção de filtro cruzado e Tornar essa relação ativa são definidas automaticamente.The relationship options Cardinality, Cross filter direction, and Make this relationship active are automatically set. O Power BI Desktop procura nomes de colunas nas tabelas que você está consultando para determinar se há alguma relação em potencial.Power BI Desktop looks at column names in the tables you're querying to determine if there are any potential relationships. Se houver, essas relações serão criadas automaticamente.If there are, those relationships are created automatically. 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.If Power BI Desktop can't determine with a high level of confidence there's a match, it doesn't create the relationship. Porém, você ainda pode usar a caixa de diálogo Gerenciar relações para criar ou editar relações manualmente.However, you can still use the Manage relationships dialog box to manually create or edit relationships.

Criar um relacionamento com detecção automáticaCreate a relationship with autodetect

Na guia Página Inicial, selecione Gerenciar Relações > Detectar Automaticamente.On the Home tab, select Manage Relationships > Autodetect.

Criar um relacionamento com detecção automática

Criar uma relação manualmenteCreate a relationship manually

  1. Na guia Página Inicial, selecione Gerenciar Relações > Nova.On the Home tab, select Manage Relationships > New.

  2. Na caixa de diálogo Criar relação, na primeira lista suspensa da tabela, selecione uma tabela.In the Create relationship dialog box, in the first table drop-down list, select a table. Selecione a coluna que você deseja usar na relação.Select the column you want to use in the relationship.

  3. Na segunda lista suspensa tabela, selecione a outra tabela que você deseja ter na relação.In the second table drop-down list, select the other table you want in the relationship. Selecione a outra coluna que você deseja usar e, em seguida, escolha OK.Select the other column you want to use, and then elect OK.

    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.By default, Power BI Desktop automatically configures the options Cardinality (direction), Cross filter direction, and Make this relationship active for your new relationship. No entanto, você poderá alterar essas configurações se necessário.However, you can change these settings if necessary. Para obter mais informações, confira Noções básicas sobre opções adicionais.For more information, see Understanding additional options.

Se nenhuma das tabelas selecionadas para a relação tiver valores exclusivos, você verá o seguinte erro: Uma das colunas deve ter valores exclusivos.If none of the tables selected for the relationship has unique values, you'll see the following error: One of the columns must have unique values. 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.At least one table in a relationship must have a distinct, unique list of key values, which is a common requirement for all relational database technologies.

Se você encontrar esse erro, haverá duas maneiras de corrigir o problema:If you encounter that error, there are a couple ways to fix the issue:

  • Use Remover Duplicatas para criar uma coluna com valores exclusivos.Use Remove Duplicates to create a column with unique values. A desvantagem dessa abordagem é que você poderá perder informações quando as linhas duplicadas forem removidas. Muitas vezes, uma chave (linha) é duplicada por um bom motivo.The drawback to this approach is that you might lose information when duplicate rows are removed; often a key (row) is duplicated for good reason.
  • Adicione uma tabela intermediária composta pela lista de valores de chave distintos no modelo, que, em seguida, será vinculado às duas colunas originais na relação.Add an intermediary table made of the list of distinct key values to the model, which will then be linked to both original columns in the relationship.

Para saber mais, consulte esta postagem em blog.For more information, see this blog post.

Editar uma relaçãoEdit a relationship

  1. Na guia Página Inicial, selecione Gerenciar Relações.On the Home tab, select Manage Relationships.

  2. Na caixa de diálogo Gerenciar relações, selecione a relação e selecione Editar.In the Manage relationships dialog box, select the relationship, then select Edit.

Configurar opções adicionaisConfigure additional options

Quando você cria ou edita uma relação, pode configurar opções adicionais.When you create or edit a relationship, you can configure additional options. Por padrão, o Power BI Desktop configura automaticamente as opções adicionais com base em uma melhor estimativa, que pode ser diferente para cada relacionamento com base nos dados das colunas.By default, Power BI Desktop automatically configures additional options based on its best guess, which can be different for each relationship based on the data in the columns.

CardinalidadeCardinality

A opção Cardinalidade pode ter uma das seguintes configurações:The Cardinality option can have one of the following settings:

Muitos para um (*:1) : uma relação de muitos para um é o tipo padrão mais comum de relação.Many to one (*:1): A many-to-one relationship is the most common, default type of realtionship. Significa que a coluna em uma 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.It means the column in one table can have more than one instance of a value, and the other related table, often know as the lookup table, has only one instance of a value.

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.One to one (1:1): In a one-to-one relationship, the column in one table has only one instance of a particular value, and the other related table has only one instance of a particular value.

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.One to many (1:*): In a one-to-many relationship, the column in one table has only one instance of a particular value, and the other related table can have more than one instance of a value.

Muitos para muitos (*:*) : com os modelos de composição, você pode estabelecer uma relação de muitos para muitos entre tabelas, o que remove os requisitos para valores exclusivos em tabelas.Many to many (*:*): With composite models, you can establish a many-to-many relationship between tables, which removes requirements for unique values in tables. Ela também remove as soluções alternativas anteriores, como introduzir novas tabelas somente para estabelecer relações.It also removes previous workarounds, such as introducing new tables only to establish relationships. Para obter mais informações, confira Relações com uma cardinalidade muitos para muitos.For more information, see Relationships with a many-many cardinality.

Para obter mais informações sobre quando alterar a cardinalidade, confira Noções básicas sobre opções adicionais.For more information about when to change cardinality, see Understanding additional options.

Direção do filtro cruzadoCross filter direction

A opção Direção do filtro cruzado pode ter uma das seguintes configurações:The Cross filter direction option can have one the following settings:

Ambas: para fins de filtragem, ambas as tabelas são tratadas como se fossem uma tabela.Both: For filtering purposes, both tables are treated as if they're a single table. A configuração Ambas é ideal para uma tabela que tem uma série de tabelas de pesquisa em torno dela.The Both setting works well with a single table that has a number of lookup tables that surround it. Um exemplo é uma tabela de dados reais de vendas com uma tabela de pesquisa por departamento.An example is a sales actuals table with a lookup table for its department. Essa configuração costuma ser chamada de configuração de esquema em estrela (uma tabela central com várias Tabelas de pesquisa).This configuration is often called a star schema configuration (a central table with several lookup tables). 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.However, if you have two or more tables that also have lookup tables (with some in common) then you wouldn't want to use the Both setting. 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.To continue the previous example, in this case, you also have a budget sales table that records target budget for each department. E a tabela de departamento é conectada tanto à tabela de vendas quanto à de alocação.And, the department table is connected to both the sales and the budget table. Evite a configuração Ambas para esse tipo de configuração.Avoid the Both setting for this kind of configuration.

Ú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.Single: The most common, default direction, which means filtering choices in connected tables work on the table where values are being aggregated. 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.If you import a Power Pivot in Excel 2013 or earlier data model, all relationships will have a single direction.

Para obter mais informações sobre quando alterar a direção do filtro cruzado, confira Noções básicas sobre opções adicionais.For more information about when to change cross filter direction, see Understanding additional options.

Ativar esta relaçãoMake this relationship active

Quando marcada, a relação serve como a relação ativa padrão.When checked, the relationship serves as the active, default relationship. 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.In cases where there is more than one relationship between two tables, the active relationship provides a way for Power BI Desktop to automatically create visualizations that include both tables.

Para obter mais informações sobre quando criar uma relação específica ativa, confira Noções básicas sobre opções adicionais.For more information about when to make a particular relationship active, see Understanding additional options.

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

Depois que você tiver conectado duas tabelas unindo-as com uma relação, poderá trabalhar com os dados em ambas as tabelas como se fossem uma, não precisando mais se preocupar com detalhes da relação nem mesclar essas tabelas em uma tabela antes de importá-las.Once you've connected two tables together with a relationship, you can work with the data in both tables as if they were a single table, freeing you from having to worry about relationship details, or flattening those tables into a single table before importing them. Em muitas situações, o Power BI Desktop pode criar relações automaticamente para você.In many situations, Power BI Desktop can automatically create relationships for you. 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.However, if Power BI Desktop can’t determine with a high-degree of certainty that a relationship between two tables should exist, it doesn't automatically create the relationship. Nesse caso, você deve fazer isso.In that case, you must do so.

Vamos conferir um pequeno tutorial, para mostrar melhor como funcionam as relações no Power BI Desktop.Let’s go through a quick tutorial, to better show you how relationships work in Power BI Desktop.

Dica

Você pode concluir esta lição por conta própria:You can complete this lesson yourself:

  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.Copy the following ProjectHours table into an Excel worksheet (excluding the title), select all of the cells, and then select Insert > Table.
  2. Na caixa de diálogo Criar Tabela, selecione OK.In the Create Table dialog box, select OK.
  3. Selecione qualquer célula da tabela, selecione Design de Tabela > Nome da Tabela e, em seguida, insira ProjectHours.Select any table cell, select Table Design > Table Name, and then enter ProjectHours.
  4. Faça o mesmo para a tabela CompanyProject.Do the same for the CompanyProject table.
  5. Importe os dados por meio de Obter Dados no Power BI Desktop.Import the data by using Get Data in Power BI Desktop. Selecione as duas tabelas como uma fonte de dados e, em seguida, selecione Carregar.Select the two tables as a data source, and then select Load.

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.The first table, ProjectHours, is a record of work tickets that record the number of hours a person has worked on a particular project.

ProjectHoursProjectHours

TicketTicket SubmittedBySubmittedBy HoursHours ProjectProject DateSubmitDateSubmit
10011001 Alan BrewerBrewer, Alan 2222 AzulBlue 1/1/20131/1/2013
10021002 Alan BrewerBrewer, Alan 2626 VermelhoRed 2/1/20132/1/2013
10031003 Shu ItoIto, Shu 3434 AmareloYellow 124201212/4/2012
10041004 Alan BrewerBrewer, Alan 1313 LaranjaOrange 1/2/20121/2/2012
10051005 Eli BowenBowen, Eli 2929 RoxoPurple 1/10/201310/1/2013
10061006 Nuno BentoBento, Nuno 3535 VerdeGreen 2/1/20132/1/2013
10071007 David HamiltonHamilton, David 1010 AmareloYellow 1/10/201310/1/2013
10081008 Mu HanHan, Mu 2828 LaranjaOrange 1/2/20121/2/2012
10091009 Shu ItoIto, Shu 2222 RoxoPurple 2/1/20132/1/2013
10101010 Eli BowenBowen, Eli 2828 VerdeGreen 101201310/1/2013
10111011 Eli BowenBowen, Eli 99 AzulBlue 10/15/201310/15/2013

Essa segunda tabela, CompanyProject, é uma lista de projetos aos quais é atribuída uma prioridade: A, B ou C.This second table, CompanyProject, is a list of projects with an assigned priority: A, B, or C.

CompanyProjectCompanyProject

ProjNameProjName PrioridadePriority
AzulBlue UmA
VermelhoRed BB
VerdeGreen CC
AmareloYellow CC
RoxoPurple BB
LaranjaOrange CC

Observe que cada tabela tem uma coluna de projeto.Notice that each table has a project column. Cada uma é nomeada de modo ligeiramente diferente, mas os valores parecem ser os mesmos.Each is named slightly different, but the values look like they’re the same. Isso é importante, e retornaremos a esse assunto em breve.That’s important, and we’ll get back to it in soon.

Agora que temos nossas duas tabelas importadas para um modelo, vamos criar um relatório.Now that we have our two tables imported into a model, let’s create a report. 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.The first thing we want to get is the number of hours submitted by project priority, so we select Priority and Hours from the Fields pane.

Selecionar Prioridade e Horas 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.If we look at our table in the report canvas, you’ll see the number of hours is 256 for each project, which is also the total. Claramente, esse número não está correto.Clearly this number isn’t correct. Por quê?Why? É 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.It’s because we can’t calculate a sum total of values from one table (Hours in the Project table), sliced by values in another table (Priority in the CompanyProject table) without a relationship between these two tables.

Portanto, vamos criar uma relação entre essas duas tabelas.So, let’s create a relationship between these two tables.

Lembre-se das colunas que vimos em ambas as tabelas com um nome de projeto, mas com valores parecidos?Remember those columns we saw in both tables with a project name, but with values that look alike? Vamos usar essas duas colunas para criar uma relação entre nossas tabelas.We'll use these two columns to create a relationship between our tables.

Por que essas colunas?Why these columns? Bem, se observarmos a coluna Projeto na tabela ProjectHours, veremos valores como Azul, Vermelho, Amarelo, Laranja e assim por diante.Well, if we look at the Project column in the ProjectHours table, we see values like Blue, Red, Yellow, Orange, and so on. Na verdade, podemos ver várias linhas que têm o mesmo valor.In fact, we see several rows that have the same value. Assim, temos muitos valores de cor para Project.In effect, we have many color values for 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.If we look at the ProjName column in the CompanyProject table, we see there’s only one of each of the color values for the project name. Cada valor de cor nesta tabela é exclusivo e isso é importante, porque podemos criar uma relação entre essas duas tabelas.Each color value in this table is unique, and that’s important, because we can create a relationship between these two tables. Nesse caso, uma relação de tipo muitos para um.In this case, a many-to-one relationship. Em uma relação muitos para um, pelo menos uma coluna em uma das tabelas deve conter valores exclusivos.In a many-to-one relationship, at least one column in one of the tables must contain unique values. Há algumas opções adicionais para algumas relações, que veremos posteriormente.There are some additional options for some relationships, which we'll look at later. Por enquanto, vamos criar uma relação entre as colunas do projeto em cada uma de nossas duas tabelas.For now, let’s create a relationship between the project columns in each of our two tables.

Para criar a nova relaçãoTo create the new relationship

  1. Selecione Gerenciar Relações na guia Página Inicial.Select Manage Relationships from the Home tab.

  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.In Manage relationships, select New to open the Create relationship dialog box, where we can select the tables, columns, and any additional settings we want for our relationship.

  3. Na primeira lista suspensa, selecione ProjectHours como a primeira tabela e, em seguida, selecione a coluna Projeto.In the first drop-down list, select ProjectHours as the first table, then select the Project column. Este é o lado muitos de nossa relação.This side is the many side of our relationship.

  4. Na segunda lista suspensa, CompanyProject é pré-selecionada como a segunda tabela.In the second drop-down list, CompanyProject is preselected as the second table. Selecione a coluna ProjName.Select the ProjName column. Este é o lado um de nossa relação.This side is the one side of our relationship.

  5. Aceite os padrões para as opções de relação e, em seguida, selecione OK.Accept the defaults for the relationship options, and then select OK.

    Caixa de diálogo Criar relação

  6. Na caixa de diálogo Gerenciar relações, selecione Fechar.In the Manage relationships dialog box, select Close.

Buscando uma divulgação completa, acabamos criando essa relação da maneira mais difícil.In the interest of full disclosure, you just created this relationship the hard way. Você poderia ter simplesmente selecionado Detecção automática na caixa de diálogo Gerenciar relações.You could have just selected Autodetect in the Manage relationships dialog box. 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.In fact, autodetect would have automatically created the relationship for you when you loaded the data if both columns had the same name. Mas qual é o desafio nisso?But, what’s the challenge in that?

Agora, vamos examinar novamente a tabela em nossa tela de relatório.Now, let’s look at the table in our report canvas again.

Relação criada com Prioridade e Horas

Agora está muito melhor, não é?That looks a whole lot better, doesn’t it?

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.When we sum up hours by Priority, Power BI Desktop looks for every instance of the unique color values in the CompanyProject lookup table, looks for every instance of each of those values in the ProjectHours table, and then calculates a sum total for each unique value.

Foi fácil.That was easy. Na verdade, com a detecção automática, talvez você nem precise fazer tudo isso.In fact, with autodetect, you might not even have to do that much.

Noções básicas sobre opções adicionaisUnderstanding additional options

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.When a relationship is created, either with autodetect or one you create manually, Power BI Desktop automatically configures additional options based on the data in your tables. 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.These additional relationship options are located in the lower portion of the Create relationship and Edit relationship dialog boxes.

Opções de relação

O Power BI tipicamente define essas opções automaticamente e você não precisará ajustá-las. No entanto, há várias situações em que você talvez queira configurar essas opções por conta própria.Power BI typically sets these options automatically and you won’t need to adjust them; however, there are several situations where you might want to configure these options yourself.

Atualizações automáticas de relaçãoAutomatic relationship updates

Você pode gerenciar como o Power BI trata e ajusta automaticamente as relações em seus relatórios e modelos.You can manage how Power BI treats and automatically adjusts relationships in your reports and models. 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.To specify how Power BI handles relationships options, select File > Options and settings > Options from Power BI Desktop, and then select Data Load in the left pane. As opções para Relações aparecem.The options for Relationships appear.

Opções de relacionamentos

Há três opções disponíveis para selecionar e habilitar:There are three options that can be selected and enabled:

  • Importar relacionamentos de fontes de dados no primeiro carregamento: Esta opção é selecionada por padrão.Import relationships from data sources on first load: This option is selected by default. 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.When it's selected, Power BI checks for relationships defined in your data source, such as foreign key/primary key relationships in your data warehouse. Se essas relações existirem, elas serão espelhadas no modelo de dados do Power BI quando você carregar os dados inicialmente.If such relationships exist, they're mirrored into the Power BI data model when you initially load data. 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.This option enables you to quickly begin working with your model, rather than requiring you find or define those relationships yourself.

  • Atualize ou exclua relacionamentos ao atualizar os dados: esta opção está desmarcada por padrão.Update or delete relationships when refreshing data: This option is unselected by default. Se você selecioná-la, o Power BI verificará se há alterações nas relações de fonte de dados quando o conjunto de dados for atualizado.If you select it, Power BI checks for changes in data source relationships when your dataset is refreshed. 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.If those relationships changed or are removed, Power BI mirrors those changes in its own data model, updating or deleting them to match.

    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.If you're using row-level security that relies on the defined relationships, we don't recommend selecting this option. Se você remover um relacionamento do qual se baseiam as configurações da RLS, o modelo poderá se tornar menos seguro.If you remove a relationship that your RLS settings rely on, your model might become less secure.

  • Detectar automaticamente novas relações após os dados serem carregados: essa opção é descrita em Detecção automática durante o carregamento.Autodetect new relationships after data is loaded: This option is described in Autodetect during load.

Atualizações futuras dos dados exigem uma cardinalidade diferenteFuture updates to the data require a different cardinality

Normalmente, o Power BI Desktop pode determinar automaticamente a melhor cardinalidade para a relação.Normally, Power BI Desktop can automatically determine the best cardinality for the relationship. 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.If you do need to override the automatic setting, because you know the data will change in the future, you can change it with the Cardinality control. Vejamos um exemplo em que precisamos selecionar uma cardinalidade diferente.Let’s look at an example where we need to select a different cardinality.

A tabela CompanyProjectPriority é uma lista de todos os projetos da empresa e da prioridade de cada um.The CompanyProjectPriority table is a list of all company projects and their priority. A tabela ProjectBudget é o conjunto de projetos para os quais um orçamento foi aprovado.The ProjectBudget table is the set of projects for which a budget has been approved.

CompanyProjectPriorityCompanyProjectPriority

ProjNameProjName PrioridadePriority
AzulBlue UmA
VermelhoRed BB
VerdeGreen CC
AmareloYellow CC
RoxoPurple BB
LaranjaOrange CC

ProjectBudgetProjectBudget

Approved ProjectsApproved Projects BudgetAllocationBudgetAllocation AllocationDateAllocationDate
AzulBlue 40.00040,000 121201212/1/2012
VermelhoRed 100.000100,000 121201212/1/2012
VerdeGreen 50.00050,000 121201212/1/2012

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.If we create a relationship between the Approved Projects column in the ProjectBudget table and the ProjectName column in the CompanyProjectPriority table, Power BI automatically sets Cardinality to One to one (1:1) and Cross filter direction to Both.

Criar relação entre as colunas da tabela

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:The reason Power BI makes these settings is because, to Power BI Desktop, the best combination of the two tables is as follows:

ProjNameProjName PrioridadePriority BudgetAllocationBudgetAllocation AllocationDateAllocationDate
AzulBlue UmA 40.00040,000 121201212/1/2012
VermelhoRed BB 100.000100,000 121201212/1/2012
VerdeGreen CC 50.00050,000 121201212/1/2012
AmareloYellow CC

RoxoPurple BB

LaranjaOrange CC

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.There's a one-to-one relationship between our two tables because there are no repeating values in the combined table’s ProjName column. 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.The ProjName column is unique, because each value occurs only once; therefore, the rows from the two tables can be combined directly without any duplication.

Mas digamos que você saiba que os dados mudarão na próxima vez que você atualizá-los.But, let’s say you know the data will change the next time you refresh it. Uma versão atualizada da tabela ProjectBudget agora tem linhas adicionais para os projetos Azul e Vermelho:A refreshed version of the ProjectBudget table now has additional rows for the Blue and Red projects:

ProjectBudgetProjectBudget

Approved ProjectsApproved Projects BudgetAllocationBudgetAllocation AllocationDateAllocationDate
AzulBlue 40.00040,000 121201212/1/2012
VermelhoRed 100.000100,000 121201212/1/2012
VerdeGreen 50.00050,000 121201212/1/2012
AzulBlue 80,00080,000 6/1/20136/1/2013
VermelhoRed 90,00090,000 6/1/20136/1/2013

Essas linhas adicionais significam que a melhor combinação das duas tabelas agora é assim:These additional rows mean the best combination of the two tables now looks like this:

ProjNameProjName PrioridadePriority BudgetAllocationBudgetAllocation AllocationDateAllocationDate
AzulBlue UmA 40.00040,000 121201212/1/2012
VermelhoRed BB 100.000100,000 121201212/1/2012
VerdeGreen CC 50.00050,000 121201212/1/2012
AmareloYellow CC

RoxoPurple BB

LaranjaOrange CC

AzulBlue UmA 8000080000 6/1/20136/1/2013
VermelhoRed BB 9000090000 6/1/20136/1/2013

Nessa nova tabela combinada, a coluna ProjName tem valores repetidos.In this new combined table, the ProjName column has repeating values. As duas tabelas originais não terão uma relação de tipo um para um depois que a tabela for atualizada.The two original tables won’t have a one-to-one relationship once the table is refreshed. Nesse caso, por sabermos que as atualizações futuras farão com que a coluna ProjName tenha duplicatas, queremos definir a Cardinalidade como Muitos Para Um (*:1) , com muitos no lado de ProjectBudget e um no lado de CompanyProjectPriority.In this case, because we know those future updates will cause the ProjName column to have duplicates, we want to set the Cardinality to be Many to one (*:1), with the many side on ProjectBudget and the one side on CompanyProjectPriority.

Ajuste da direção de filtro cruzado para um conjunto complexo de tabelas e relaçõesAdjusting Cross filter direction for a complex set of tables and relationships

Para a maioria das relações, a direção do filtro cruzado é definida como Ambas.For most relationships, the cross filter direction is set to Both. No entanto, há algumas circunstâncias mais incomuns em que você talvez precise definir essa opção de modo diferente do padrão, como se você estivesse importando um modelo de uma versão anterior do PowerPivot, na qual cada relação é configurada para uma direção.There are, however, some more uncommon circumstances where you might need to set this option differently from the default, like if you’re importing a model from an older version of Power Pivot, where every relationship is set to a single direction.

A configuração Ambas habilita o Power BI Desktop a tratar todos os aspectos das tabelas conectadas como se elas fossem uma tabela.The Both setting enables Power BI Desktop to treat all aspects of connected tables as if they're a single table. 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.There are some situations, however, where Power BI Desktop can't set a relationship’s cross filter direction to Both and also keep an unambiguous set of defaults available for reporting purposes. 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.If a relationship cross filter direction isn't set to Both, then it’s usually because it would create ambiguity. 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.If the default cross filter setting isn’t working for you, try setting it to a particular table or to Both.

A filtragem cruzada em uma única direção funciona em muitas situações.Single direction cross filtering works for many situations. 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.In fact, if you’ve imported a model from Power Pivot in Excel 2013 or earlier, all of the relationships will be set to single direction. 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.Single direction means that filtering choices in connected tables work on the table where aggregation work is happening. Às vezes compreender a filtragem cruzada pode ser um pouco difícil, portanto, vamos examinar um exemplo.Sometimes, understanding cross filtering can be a little difficult, so let’s look at an example.

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.With single direction cross filtering, if you create a report that summarizes the project hours, you can then choose to summarize (or filter) by the CompanyProject table and its Priority column or the CompanyEmployee table and its City column. Se, no entanto, você quiser contar o número de funcionários por projeto (uma pergunta menos comum), isso não funcionará.If however, you want to count the number of employees per projects (a less common question), it won’t work. Você obterá uma coluna de valores todos iguais.You’ll get a column of values that are all the same. 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.In the following example, both relationship's cross filtering direction is set to a single direction: towards the ProjectHours table. Em Valores, o campo Projeto é definido como Contagem:In the Values well, the Project field is set to Count:

Direção da filtragem cruzada

A especificação de filtro fluirá de CompanyProject para ProjectHours (conforme mostra a imagem a seguir), porém, não fluirá até CompanyEmployee.Filter specification will flow from CompanyProject to ProjectHours (as shown in the following image), but it won’t flow up to CompanyEmployee.

Exemplo de filtragem cruzada

No entanto, se você definir a direção de filtragem cruzada como Ambas, ela funcionará.However, if you set the cross filtering direction to Both, it will work. A configuração Ambas permite que a especificação de filtro flua até CompanyEmployee.The Both setting allows the filter specification to flow up to CompanyEmployee.

Fluxo de especificação de filtro

Com a direção da filtragem cruzada definida como Ambas, nosso relatório agora parece correto:With the cross filtering direction set to Both, our report now appears correct:

Direção da filtragem cruzada definida como Ambas

A filtragem cruzada em ambos os trajetos funciona bem para um padrão de relações de tabela como o padrão acima.Cross filtering both directions works well for a pattern of table relationships such as the pattern above. Esse esquema é mais comumente chamado de um esquema em estrela, como esse:This schema is most commonly called a star schema, like this:

Filtragem cruzada em ambas as direções no esquema em estrela

A direção de filtragem cruzada não funciona bem com um padrão mais geral encontrado com frequência em bancos de dados, como nesse diagrama:Cross filtering direction does not work well with a more general pattern often found in databases, like in this diagram:

Filtragem cruzada em ambas as direções no 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.If you have a table pattern like this, with loops, then cross filtering can create an ambiguous set of relationships. 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.For instance, if you sum up a field from TableX and then choose to filter by a field on TableY, then it’s not clear how the filter should travel, through the top table or the bottom table. 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.A common example of this kind of pattern is with TableX as a sales table with actuals data and for TableY to be budget data. Em seguida, as tabelas no meio são tabelas de pesquisa usadas por ambas as tabelas, como divisão ou região.Then, the tables in the middle are lookup tables that both tables use, such as division or region.

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.As with active/inactive relationships, Power BI Desktop won’t allow a relationship to be set to Both if it will create ambiguity in reports. Há várias maneiras de lidar com essa situação.There are several different ways you can handle this situation. Aqui estão as duas mais comuns:Here are the two most common:

  • Excluir ou marcar relações como inativas para reduzir a ambiguidade.Delete or mark relationships as inactive to reduce ambiguity. Em seguida, talvez você possa definir a filtragem cruzada de uma relação como Ambas.Then, you might be able to set a relationship cross filtering as Both.
  • Inclua uma tabela duas vezes (com um nome diferente na segunda vez) para eliminar os loops.Bring in a table twice (with a different name the second time) to eliminate loops. Fazer isso torna o padrão de relações similar a um esquema em estrela.Doing so makes the pattern of relationships like a star schema. Com um esquema em estrela, todas as relações podem ser definidas como Ambas.With a star schema, all of the relationships can be set to Both.

Relação ativa erradaWrong active relationship

Quando o Power BI Desktop cria relações automaticamente, ele às vezes encontra mais de uma relação entre duas tabelas.When Power BI Desktop automatically creates relationships, it sometimes encounters more than one relationship between two tables. Quando essa situação acontece, apenas uma das relações é definida como ativa.When this situation happens, only one of the relationships is set to be active. 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ê.The active relationship serves as the default relationship, so that when you choose fields from two different tables, Power BI Desktop can automatically create a visualization for you. No entanto, em alguns casos, a relação selecionada automaticamente pode estar errada.However, in some cases the automatically selected relationship can be wrong. 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.Use the Manage relationships dialog box to set a relationship as active or inactive, or set the active relationship in the Edit relationship dialog box.

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.To ensure there’s a default relationship, Power BI Desktop allows only a single active relationship between two tables at a given time. Portanto, você deve primeiro definir a relação atual como inativa e, em seguida, definir como ativa a relação desejada.Therefore, you must first set the current relationship as inactive and then set the relationship you want to be active.

Vejamos um exemplo.Let’s look at an example. A primeira tabela é ProjectTickets, a segunda tabela é EmployeeRole.The first table is ProjectTickets, and the second table is EmployeeRole.

ProjectTicketsProjectTickets

TicketTicket OpenedByOpenedBy SubmittedBySubmittedBy HoursHours ProjectProject DateSubmitDateSubmit
10011001 Tom PerhamPerham, Tom Alan BrewerBrewer, Alan 2222 AzulBlue 1/1/20131/1/2013
10021002 Daniel RomanoRoman, Daniel Alan BrewerBrewer, Alan 2626 VermelhoRed 2/1/20132/1/2013
10031003 Daniel RothRoth, Daniel Shu ItoIto, Shu 3434 AmareloYellow 124201212/4/2012
10041004 Tom PerhamPerham, Tom Alan BrewerBrewer, Alan 1313 LaranjaOrange 1/2/20121/2/2012
10051005 Daniel RomanoRoman, Daniel Eli BowenBowen, Eli 2929 RoxoPurple 1/10/201310/1/2013
10061006 Daniel RothRoth, Daniel Nuno BentoBento, Nuno 3535 VerdeGreen 2/1/20132/1/2013
10071007 Daniel RothRoth, Daniel David HamiltonHamilton, David 1010 AmareloYellow 1/10/201310/1/2013
10081008 Tom PerhamPerham, Tom Mu HanHan, Mu 2828 LaranjaOrange 1/2/20121/2/2012
10091009 Daniel RomanoRoman, Daniel Shu ItoIto, Shu 2222 RoxoPurple 2/1/20132/1/2013
10101010 Daniel RothRoth, Daniel Eli BowenBowen, Eli 2828 VerdeGreen 101201310/1/2013
10111011 Tom PerhamPerham, Tom Eli BowenBowen, Eli 99 AzulBlue 10/15/201310/15/2013

EmployeeRoleEmployeeRole

EmployeeEmployee FunçãoRole
Nuno BentoBento, Nuno Gerente de projetoProject Manager
Eli BowenBowen, Eli Líder de projetoProject Lead
Alan BrewerBrewer, Alan Gerente de projetoProject Manager
David HamiltonHamilton, David Líder de projetoProject Lead
Mu HanHan, Mu Líder de projetoProject Lead
Shu ItoIto, Shu Líder de projetoProject Lead
Tom PerhamPerham, Tom Patrocinador de projetoProject Sponsor
Daniel RomanoRoman, Daniel Patrocinador de projetoProject Sponsor
Daniel RothRoth, Daniel Patrocinador de projetoProject Sponsor

Na verdade, existem duas relações aqui:There are actually two relationships here:

  • Entre Employee na tabela EmployeeRole e SubmittedBy na tabela ProjectTickets.Between Employee in the EmployeeRole table and SubmittedBy in the ProjectTickets table.
  • Entre OpenedBy na tabela ProjectTickets e Employee na tabela EmployeeRole.Between OpenedBy in the ProjectTickets table and Employee in the EmployeeRole table.

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:If we add both relationships to the model (OpenedBy first), then the Manage relationships dialog box shows that OpenedBy is active:

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.Now, if we create a report that uses Role and Employee fields from EmployeeRole, and the Hours field from ProjectTickets in a table visualization in the report canvas, we see only project sponsors because they’re the only ones that opened a project ticket.

Campos Employee, Role e Hours selecionados

Podemos alterar a relação ativa e obter SubmittedBy, em vez de OpenedBy.We can change the active relationship and get SubmittedBy instead of 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) .In Manage relationships, uncheck the ProjectTickets(OpenedBy) to EmployeeRole(Employee) relationship, and then check the EmployeeRole(Employee) to Project Tickets(SubmittedBy) relationship.

Alterar relação ativa na caixa de diálogo Gerenciar relação

Ver todas as relações na exibição RelaçãoSee all of your relationships in Relationship view

Às vezes, seu modelo tem várias tabelas e relações complexas entre elas.Sometimes your model has multiple tables and complex relationships between them. 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.Relationship view in Power BI Desktop shows all of the relationships in your model, their direction, and cardinality in an easy to understand and customizable diagram.

Para saber mais, confira Trabalhar com a exibição Relação no Power BI Desktop.To learn more, see Work with Relationship view in Power BI Desktop.