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’re going to 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 in order 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 pode fazer isso por você.In-fact, in most cases you won’t have to do anything, the Autodetect feature can do it for you. No entanto, em alguns casos, talvez você precise criar relações por conta própria, ou talvez seja necessário fazer algumas alterações em uma relação.However, in some cases you might have to create relationships yourself, or you might need to make some 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 will attempt to find and create relationships for you. A cardinalidade, a direção do filtro cruzado e as propriedades de relação ativa são definidas automaticamente.Cardinality, Cross filter direction, and Active properties are automatically set. O Power BI Desktop procura nomes de colunas nas tabelas que você está consultando para determinar se há quaisquer relações em potencial.Power BI Desktop looks at column names in the tables you are 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. Se o Power BI Desktop não pode determinar com um alto nível de confiança que há uma correspondência, ele não criará automaticamente a relação.If Power BI Desktop cannot determine with a high-level of confidence there is a match, it will not automatically create the relationship. Você ainda pode usar a caixa de diálogo Gerenciar Relações para criar ou editar relações.You can still use the Manage Relationships dialog to create or edit relationships.

Criar uma relação usando a Detecção AutomáticaCreate a relationship by using Autodetect

Na guia Página Inicial, clique em Gerenciar Relações > Detectar Automaticamente.On the Home tab, click Manage Relationships > AutoDetect.

Criar uma relação manualmenteCreate a relationship manually

  1. Na guia Página Inicial, clique em Gerenciar Relações > Nova.On the Home tab, click Manage Relationships > New.
  2. Na caixa de diálogo Criar Relação, na primeira lista suspensa de tabelas, selecione uma tabela e, em seguida, selecione a coluna que você deseja usar na relação.In the Create Relationship dialog, in the first table drop-down list, select a table, and then select the column you want to use in the relationship.
  3. Na segunda lista suspensa de tabelas, selecione a outra tabela que você deseja na relação, em seguida a outra coluna que você deseja usar, então clique em OK.In the to second table drop-down list, select the other table you want in the relationship, then select the other column you want to use, and then click OK.

Por padrão, o Power BI Desktop configurará automaticamente a Cardinalidade (direção), Direção do filtro cruzado e Propriedades ativas para sua nova relação; no entanto, você pode alterá-las se necessário em Opções avançadas.By default, Power BI Desktop will automatically configure the Cardinality (direction), Cross filter direction, and Active properties for your new relationship; however, you can change these if necessary in Advanced options. Para obter mais informações, consulte a seção Noções básicas sobre opções avançadas, posteriormente neste artigo.To learn more, see the Understanding advanced options section later in this article.

Editar uma relaçãoEdit a relationship

  1. Na guia Página Inicial , clique em Gerenciar Relações.On the Home tab, click Manage Relationships.
  2. Na caixa de diálogo Gerenciar Relações , selecione a relação e clique em Editar.In the Manage Relationships dialog, select the relationship, then click Edit.

Configurar opções avançadasConfigure advanced options

Quando você cria ou edita uma relação, você pode configurar opções avançadas.When you create or edit a relationship, you can configure advanced options. Por padrão, as opções avançadas são configuradas automaticamente com base na melhor estimativa.By default, advanced options are automatically configured based on a best guess. Isso pode ser diferente para cada relação, com base nos dados contidos nas colunas.This can be different for each relationship based on the data in the columns.

CardinalidadeCardinality

Muitos para um (*:1) – Esse é o tipo padrão mais comum.Many to One (*:1) - This is the most common, default type. Isso 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.This 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) - isso significa que a coluna em uma tabela tem apenas uma instância de um determinado valor e que isso também ocorre na outra tabela relacionada.One to One (1:1) - This means 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.

Consulte a seção Noções básicas sobre opções avançadas, mais adiante neste artigo, para obter mais detalhes sobre quando alterar a cardinalidade.See the Understanding advanced options section later in this article for more details about when to change cardinality.

Direção do filtro cruzadoCross filter direction

Ambas - essa é a direção padrão, mais comum.Both - This is the most common, default direction. Isso significa que, para fins de filtragem, ambas as tabelas são tratadas como se fossem uma única tabela.This means for filtering purposes, both tables are treated as if they're a single table. Isso funciona bem com uma única tabela que tem uma série de tabelas de pesquisa em torno dela.This 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 department. Isso é frequentemente chamado 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 seria vantajoso para você usar a configuração “Ambas”.This is often called a Star schema configuration (a central table with several Lookup tables.) 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.

Única - isso significa que as opções de filtragem em tabelas conectadas funcionam na tabela na qual os valores estão sendo agregados.Single - This means that 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.

Consulte a seção Noções básicas sobre opções avançadas, mais adiante neste artigo, para obter mais detalhes sobre quando alterar a direção do filtro cruzado.See the Understanding advanced options section later in this article for more details about when to change cross filter direction.

Tornar esta relação ativaMake this relationship active

Quando marcada, isso significa que a relação serve como a relação ativa, padrão.When checked, this means 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 are 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.

Consulte a seção Noções básicas sobre opções avançadas mais adiante neste artigo para obter mais detalhes sobre quando tornar ativa uma relação específica.See the Understanding advanced options section later in this article for more details about when to make a particular relationship active.

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

Depois que você tiver conectado duas tabelas unindo-as com uma relação, você pode trabalhar com os dados em ambas as tabelas como se fossem uma única, não precisando mais se preocupar com detalhes da relação nem mesclar essas tabelas em uma única tabela antes de importá-las.Once you have 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ê, ou seja, talvez nem seja necessário criar essas relações por conta própria.In many situations, Power BI Desktop can automatically create relationships for you, so creating those relationships yourself might not even be needed. No entanto, se a área de trabalho do Power BI 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 will not automatically create the relationship . Nesse caso, você precisará criar a relação.In that case, you will need to create the relationship.

Vamos fazer um pequeno tutorial, para mostrar melhor como funcionam as relações no Power BI Desktop.Let’s do a little 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. Copie a tabela ProjectHours abaixo em uma planilha do Excel, selecione todas as células, clique em INSERIR > Tabela.Copy the ProjectHours table below into an Excel worksheet, select all of the cells, click INSERT > Table. Na caixa de diálogo Criar Tabela , clique em OK.In the Create Table dialog, just click OK. Em seguida, em Nome da Tabela, digite ProjectHours.Then in Table Name, type ProjectHours. Faça o mesmo para a tabela CompanyProject.Do the same for the CompanyProject table. Em seguida, você pode importar os dados por meio de Obter Dados no Power BI Desktop.You can then import the data by using Get Data in Power BI Desktop. Selecione sua pasta de trabalho e tabelas como uma fonte de dados.Select your workbook and tables as a data source.

Esta 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.This 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 101201310/1/2013
10061006 Nuno BentoBento, Nuno 3535 VerdeGreen 2/1/20132/1/2013
10071007 David HamiltonHamilton, David 1010 AmareloYellow 101201310/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 PriorityPriority
AzulBlue AA
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 are 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 a little bit.

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 Priority e Hours em Campos.The first thing we want to get is the number of hours submitted by project priority, so we select Priority and Hours from Fields.

Se observarmos nossa tabela na tela Relatório, você verá que o número de horas é 256,00 para cada projeto e é também o total.If we look at our table in the Report canvas, you’ll see the number of hours is 256.00 for each project, and it’s also the total. Obviamente isso não é correto.Clearly this isn’t correct. Por que?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’re going to 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, vemos 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, vemos que há somente um de cada um dos valores de cor para Project.If we look at the ProjName column in the CompanyProject table, we see there’s only one of each of the color values for project. 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 avançadas para determinadas relações e vamos analisá-las posteriormente, mas por enquanto, vamos criar uma relação entre as colunas Project em cada uma de nossas duas tabelas.There are some advanced options for some relationships, and we’ll look at those later, but 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. Clique em Gerenciar Relacionamentos.Click Manage Relationships.
  2. Em Gerenciar Relações, clique em Novo.In Manage Relationships, click New. Isso abre a caixa de diálogo Criar Relação , na qual podemos selecionar tabelas, colunas e quaisquer configurações avançadas desejadas para nossa relação.This opens the Create Relationship dialog, where we can select the tables, columns, and any advanced settings we want for our relationship.
  3. Na primeira tabela, selecione ProjectHours; em seguida, selecione a coluna Project .In the first table, select ProjectHours, then select the Project column. Este é o lado muitos de nossa relação.This is the many side of our relationship.
  4. Na segunda tabela, selecione CompanyProject, depois selecione a coluna Project .In the second table, select CompanyProject, then select the ProjName column. Este é o lado um de nossa relação.This is the one side of our relationship.
  5. Vá em frente e clique em OK em ambas as caixas de diálogo Criar Relação e Gerenciar Relações .Go ahead and click OK in both the Create Relationship dialog and the Manage Relationships dialog.

Buscando uma divulgação completa, acabamos na verdade criando essa relação da maneira mais difícil.In the interest of full disclosure, you really just created this relationship the hard way. Você poderia ter simplesmente clicado no botão Detecção Automática na caixa de diálogo Gerenciar Relações.You could've just clicked on the Autodetect button in the Manage Relationships dialog. Na verdade, a Detecção Automática já teria feito isso para você quando você carregou os dados se ambas as colunas tivessem o mesmo nome.In-fact, Autodetect would have already done it 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 Relatório.Now, let’s look at the table in our Report canvas again.

Agora a aparência está muito melhor, não é?Now 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, então procura cada instância de cada um desses valores na tabela CompanyProject; por fim, calcula uma soma total para cada valor exclusivo.When we sum up hours by Priority, Power BI Desktop will look for every instance of the unique color values in the CompanyProject lookup table, and then look for every instance of each of those values in the CompanyProject table, and calculate a sum total for each unique value.

Foi bastante fácil; na verdade, com a Detecção Automática, talvez você nem precise chegar a fazer tudo isso.That was pretty easy, in-fact, with Autodetect, you might not even have to do this much.

Noções básicas sobre opções avançadasUnderstanding advanced options

Quando uma relação é criada, seja com Detecção Automática ou manualmente por você, o Power BI Desktop configurará opções avançadas automaticamente com base nos dados de suas tabelas.When a relationship is created, either with Autodetect or one you create manually, Power BI Desktop will automatically configure advanced options based on the data in your tables. Você pode configurar propriedades avançadas da relação expandindo Opções avançadas na caixa de diálogo Criar/Editar relação.You can configure advanced relationship properties by expanding Advanced options in the Create/Edit relationship dialog.

Como dissemos, elas geralmente são definidas automaticamente e você não precisará lidar com elas; no entanto, há várias situações em que você talvez queira configurar opções avançadas por conta própria.As we said, these are usually set automatically and you won’t need to mess with them; however, there are several situations where you might want to configure advanced options yourself.

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á selecioná-la no controle Cardinalidade.If you do need to override the automatic setting, because you know the data will change in the future, you can select it in 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 abaixo é uma lista de todos os projetos da empresa, incluindo a prioridade de cada um.The CompanyProjectPriority table below is a list of all company projects and their priority. A tabela ProjectBudget é o conjunto de projetos para os quais o orçamento foi aprovado.The ProjectBudget table is the set of projects for which budget has been approved.

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

CompanyProjectPriorityCompanyProjectPriority

ProjectProject PriorityPriority
AzulBlue AA
VermelhoRed BB
VerdeGreen CC
AmareloYellow CC
RoxoPurple BB
LaranjaOrange CC

Se criarmos uma relação entre a coluna Project na tabela CompanyProjectPriority e a coluna ApprovedProjects na tabela ProjectBudget, desse modo:If we create a relationship between the Project column in the CompanyProjectPriority table and ApprovedProjects column in the ProjectBudget table, like this:

A cardinalidade é definida automaticamente como Um Para Um (1:1) e a direção da filtragem cruzada como “Ambas” (conforme mostrado).Cardinality is automatically set to One-to-One (1:1), and cross filtering to be Both (as shown). Isso ocorre porque, para o Designer, a melhor combinação das duas tabelas agora tem essa aparência:This is because to Power BI Desktop, the best combination of the two tables really looks like this:

ProjectProject PriorityPriority BudgetAllocationBudgetAllocation AllocationDateAllocationDate
AzulBlue AA 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 Project da tabela combinada.There is a one-to-one relationship between our two tables because there are no repeating values in the combined table’s Project column. A coluna Project é exclusiva, porque cada valor ocorre apenas uma vez; portanto, as linhas das duas tabelas podem ser combinadas diretamente sem nenhuma duplicação.The Project column is unique, because each value occurs only once, so, 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 Azul e Vermelho:A refreshed version of the ProjectBudget table now has additional rows for Blue and Red:

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

Isso significa que a melhor combinação das duas tabelas agora tem essa aparência:This means the best combination of the two tables now really looks like this:

ProjectProject PriorityPriority BudgetAllocationBudgetAllocation AllocationDateAllocationDate
AzulBlue AA 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 AA 8000080000 6/1/20136/1/2013
VermelhoRed BB 9000090000 6/1/20136/1/2013

Nessa nova tabela combinada, há repetição de valores na coluna Project.In this new combined table, the Project 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 de projeto tenha duplicatas, queremos definir a Cardinalidade como Muitos Para Um (*:1), com Muitos no lado de ProjectBudget e Um no lado de CompanyProject.In this case, because we know those future updates will cause the Project column to have duplicates, we want to set the Cardinality to be Many-to-One (*:1), with the Many on the ProjectBudget side and the One on the CompanyProject side.

Ajustando a direção de filtro cruzado para um conjunto complexo de relações de tabelasAdjusting cross filter direction for a complex set of tables of relationships

Para a maioria das relações, a direção da filtragem cruzada é 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 isso 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 única direção.There are, however, some more uncommon circumstances where you might need to set this different 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 única tabela.The Both setting enables Power BI Desktop to treat all aspects of connected tables as if they are 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 cannot 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 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 você poderá, em seguida, escolher resumir (ou filtrar) por CompanyProject, Priority ou CompanyEmployee, City.With single direction cross filtering, if you create a report that summarizes the project hours and then you can choose to summarize (or filter) by CompanyProject, Priority or CompanyEmployee, City. 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 employee 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 exemplo a seguir, a direção da filtragem cruzada de ambas as relações está definida como uma única direção - em direção à tabela ProjectHours:In the example below, both relationships cross filtering direction is set to a single direction – towards the ProjectHours table:

A especificação de filtro fluirá de CompanyProject para CompanyEmployee (conforme mostrado na imagem abaixo), porém, o fluxo não chegará até CompanyEmployee.Filter specification will flow from CompanyProject to CompanyEmployee (as shown in the image below) but, it won’t flow up to CompanyEmployee. 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é Employee.The Both setting allows the filter specification to flow up to Employee.

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:

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

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:

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 Tabela X seja uma tabela Sales com dados efetivos e que Tabela Y seja de dados de orçamento.A common example for this kind of pattern is TableX to be a Sales table with actuals data and for TableY to be budget data. Em seguida, as tabelas no meio são tabelas de pesquisa utilizadas 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.

Assim 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.Just like with active/inactive relationships, Power BI Desktop won’t allow a relationship to be set as Both if it will create ambiguity in reports. Há várias maneiras diferentes de tratar disso, aqui estão as duas mais comuns:There are several different ways you can deal with this, 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. Isso torna o padrão de relações similar a um esquema em estrela.This 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 isso acontece, apenas uma das relações é definida como ativa.When this 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. Você pode usar a caixa de diálogo Gerenciar Relações para definir uma relação como ativa ou inativa, ou então definir a relação ativa na caixa de diálogo Editar relação.You can use the Manage Relationships dialog to set a relationship as active or inactive, or you can set the active relationship in the Edit relationship dialog.

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 only allows 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.So, 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. Esta primeira tabela é ProjectTickets, a tabela a seguir é EmployeeRole.This first table is ProjectTickets, and the next 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 101201310/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 101201310/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. Uma é entre SubmittedBy na tabela ProjectTickets e Employee na tabela EmployeeRole, enquanto a outra é entre OpenedBy na tabela ProjectTickets e Employee na tabela EmployeeRole.One is between SubmittedBy in the ProjectTickets table and Employee in the EmployeeRole table, and the other is between OpenedBy in the ProjectTickets table and Employee in the EmployeeRole table.

Se adicionarmos ambas as relações no modelo (OpenedBy primeiro), a caixa de diálogo Gerenciar Relações mostrará em seguida que OpenedBy está ativa:If we add both relationships to the model (OpenedBy first), then the Manage Relationships dialog will show that OpenedBy is active:

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 que têm um tíquete de projeto aberto.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’ll see only project sponsors because they’re the only ones that opened a project ticket.

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 a relação entre Project Tickets(SubmittedBy) e EmployeeRole(Employee).In Manage Relationships, we uncheck the ProjectTickets(OpenedBy) to EmployeeRole(Employee) relationship, and then we check the Project Tickets(SubmittedBy) to EmployeeRole(Employee) relationship.

Ver todas as relações na Exibição de 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 de 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, consulte Exibição de Relações no Power BI Desktop.To learn more, see Relationship View in Power BI Desktop.