Créer et gérer des relations dans Power BI DesktopCreate and manage relationships in Power BI Desktop

Quand vous importez plusieurs tables, vous êtes souvent amené à effectuer des analyses impliquant les données de ces tables.When you import multiple tables, chances are you’re going to do some analysis using data from all those tables. Les relations entre ces tables sont nécessaires pour obtenir des résultats précis et afficher les informations correctes dans vos rapports.Relationships between those tables are necessary in order to accurately calculate results and display the correct information in your reports. Power BI Desktop facilite la création de ces relations.Power BI Desktop makes creating those relationships easy. Dans la plupart des cas, vous n’avez rien à faire ; la fonctionnalité Détection automatique se charge de tout.In-fact, in most cases you won’t have to do anything, the Autodetect feature can do it for you. Toutefois, dans certains cas, vous pouvez être amené à créer des relations vous-même ou à apporter des modifications à une relation.However, in some cases you might have to create relationships yourself, or you might need to make some changes to a relationship. Dans les deux cas, il est important de comprendre le fonctionnement des relations dans Power BI Desktop et comment les créer et les modifier.Either way, it’s important to understand relationships in Power BI Desktop and how to create and edit them.

Détection automatique pendant le chargementAutodetect during load

Si vous interrogez plusieurs tables en même temps, quand les données sont chargées, Power BI Desktop tente de trouver et de créer des relations pour vous.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. Les propriétés Cardinalité, Direction du filtrage croisé et Active sont automatiquement définies.Cardinality, Cross filter direction, and Active properties are automatically set. Power BI Desktop examine les noms des colonnes des tables que vous interrogez pour déterminer s’il existe des relations potentielles.Power BI Desktop looks at column names in the tables you are querying to determine if there are any potential relationships. S’il en existe, ces relations sont automatiquement créées.If there are, those relationships are created automatically. Si Power BI Desktop ne peut pas déterminer avec un niveau de confiance élevé qu’il existe une correspondance, il ne crée pas la relation automatiquement.If Power BI Desktop cannot determine with a high-level of confidence there is a match, it will not automatically create the relationship. Vous pouvez néanmoins utiliser la boîte de dialogue Gérer les relations pour créer ou modifier des relations.You can still use the Manage Relationships dialog to create or edit relationships.

Créer une relation à l’aide de la fonctionnalité Détection automatiqueCreate a relationship by using Autodetect

Sous l’onglet Accueil, cliquez sur Gérer les relations>Détection automatique.On the Home tab, click Manage Relationships > AutoDetect.

Créer une relation manuellementCreate a relationship manually

  1. Sous l’onglet Accueil, cliquez sur Gérer les relations>Nouveau.On the Home tab, click Manage Relationships > New.
  2. Dans la boîte de dialogue Créer une relation, dans la première liste déroulante de tables, sélectionnez une table, puis sélectionnez la colonne que vous souhaitez utiliser dans la relation.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. Dans la seconde liste déroulante de tables, sélectionnez l’autre table que vous souhaitez dans la relation, puis l’autre colonne que vous souhaitez utiliser, puis cliquez sur 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.

Par défaut, Power BI Desktop configure automatiquement les propriétés Cardinalité (direction), Direction du filtrage croisé et Active pour votre nouvelle relation. Toutefois, vous pouvez les modifier si nécessaire dans Options avancées.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. Pour plus d’informations, consultez la section Présentation des options avancées plus loin dans cet article.To learn more, see the Understanding advanced options section later in this article.

Modifier une relationEdit a relationship

  1. Sous l’onglet Accueil, cliquez sur Gérer les relations.On the Home tab, click Manage Relationships.
  2. Dans la boîte de dialogue Gérer les relations, sélectionnez la relation, puis cliquez sur Modifier.In the Manage Relationships dialog, select the relationship, then click Edit.

Configurer les options avancéesConfigure advanced options

Quand vous créez ou modifiez une relation, vous pouvez configurer des options avancées.When you create or edit a relationship, you can configure advanced options. Par défaut, les options avancées sont configurées automatiquement d’après une estimation.By default, advanced options are automatically configured based on a best guess. Cette configuration étant déterminée par les données des colonnes, elle peut varier d’une relation à l’autre.This can be different for each relationship based on the data in the columns.

CardinalitéCardinality

Plusieurs à un (*:1) : il s’agit du type par défaut, le plus courant.Many to One (*:1) - This is the most common, default type. La colonne d’une table peut avoir plusieurs instances d’une valeur, tandis que la table connexe, souvent appelée table de recherche, n’a qu’une seule instance d’une valeur donnée.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.

Un à un (1:1) : la colonne d’une table n’a qu’une seule instance d’une valeur donnée et la table connexe n’a qu’une seule instance d’une valeur donnée.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.

Pour plus d’informations sur la modification de la cardinalité, consultez la section Présentation des options avancées plus loin dans cet article.See the Understanding advanced options section later in this article for more details about when to change cardinality.

Direction du filtrage croiséCross filter direction

À double sens : il s’agit de la direction par défaut, la plus courante.Both - This is the most common, default direction. Pendant les opérations de filtrage, les deux tables sont traitées comme s’il s’agissait d’une table unique.This means for filtering purposes, both tables are treated as if they're a single table. Cela fonctionne bien avec une table unique entourée de plusieurs tables de choix.This works well with a single table that has a number of lookup tables that surround it. Une table de valeurs de ventes réelles avec une table de choix pour le service constitue un bon exemple.An example is a Sales actuals table with a lookup table for department. On parle souvent de configuration de schéma en étoile (une table centrale avec plusieurs tables de choix.) Toutefois, si vous avez plusieurs tables qui possèdent aussi des tables de choix (certaines en commun), vous ne devez pas utiliser le paramètre À double sens.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. Pour continuer avec l’exemple précédent, vous avez également une table de ventes budgétées qui enregistre le budget cible pour chaque service.To continue the previous example, in this case, you also have a budget sales table that records target budget for each department. Et la table des services est connectée à la fois à la table des ventes et à la table du budget.And, the department table is connected to both the sales and the budget table. Évitez le paramètre À double sens pour ce type de configuration.Avoid the Both setting for this kind of configuration.

À sens unique : les choix de filtrage dans les tables connectées agissent sur la table dans laquelle les valeurs sont agrégées.Single - This means that filtering choices in connected tables work on the table where values are being aggregated. Si vous importez un modèle de données Power Pivot dans Excel 2013 ou version antérieure, toutes les relations ont une seule direction.If you import a Power Pivot in Excel 2013 or earlier data model, all relationships will have a single direction.

Pour plus d’informations sur la modification de la direction du filtrage croisé, consultez la section Présentation des options avancées plus loin dans cet article.See the Understanding advanced options section later in this article for more details about when to change cross filter direction.

Rendre cette relation activeMake this relationship active

Quand cette option est cochée, la relation fait office de relation par défaut active.When checked, this means the relationship serves as the active, default relationship. S’il existe plusieurs relations entre deux tables, la relation active permet à Power BI Desktop de créer automatiquement des visualisations qui incluent les deux tables.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.

Pour plus d’informations sur la façon de rendre une relation spécifique active, consultez la section Présentation des options avancées plus loin dans cet article.See the Understanding advanced options section later in this article for more details about when to make a particular relationship active.

Présentation des relationsUnderstanding relationships

Une fois que vous avez connecté deux tables avec une relation, vous pouvez utiliser les données des deux tables comme s’il s’agissait d’une table unique ; ainsi, vous n’avez pas à vous soucier des détails de la relation et vous n’avez pas besoin d’aplatir ces tables dans une table unique avant de les importer.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. Dans de nombreuses situations, Power BI Desktop peut créer automatiquement des relations à votre place.In many situations, Power BI Desktop can automatically create relationships for you, so creating those relationships yourself might not even be needed. Toutefois, si Power BI Desktop ne peut pas déterminer avec un haut degré de certitude qu’une relation entre deux tables doit exister, il ne crée pas automatiquement la relation.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 . Dans ce cas, vous devez la créer vous-même.In that case, you will need to create the relationship.

Nous allons suivre un petit didacticiel pour mieux illustrer le fonctionnement des relations dans Power BI Desktop.Let’s do a little tutorial, to better show you how relationships work in Power BI Desktop.

Conseil

Vous pouvez effectuer cette leçon vous-même.You can complete this lesson yourself. Copiez la table HeuresProjet ci-dessous dans une feuille de calcul Excel, sélectionnez toutes les cellules, puis cliquez sur Insertion>Tableau.Copy the ProjectHours table below into an Excel worksheet, select all of the cells, click INSERT > Table. Dans la boîte de dialogue Créer un tableau, cliquez sur OK.In the Create Table dialog, just click OK. Dans Nom du tableau, tapez HeuresProjet.Then in Table Name, type ProjectHours. Faites de même pour la table ProjetEntreprise.Do the same for the CompanyProject table. Vous pouvez ensuite importer les données avec l’option Obtenir des données dans Power BI Desktop.You can then import the data by using Get Data in Power BI Desktop. Sélectionnez votre classeur et le tables comme source de données.Select your workbook and tables as a data source.

La première table, HeuresProjet, contient les tickets de travail qui enregistrent le nombre d’heures qu’une personne a travaillé sur un projet particulier.This first table, ProjectHours, is a record of work tickets that record the number of hours a person has worked on a particular project.

HeuresProjetProjectHours

TicketTicket SoumisParSubmittedBy HeuresHours ProjetProject DateSoumissionDateSubmit
10011001 Brewer, AlanBrewer, Alan 2222 BleuBlue 1/1/20131/1/2013
10021002 Brewer, AlanBrewer, Alan 2626 RougeRed 2/1/20132/1/2013
10031003 Ito, ShuIto, Shu 3434 JauneYellow 12/4/201212/4/2012
10041004 Brewer, AlanBrewer, Alan 1313 OrangeOrange 1/2/20121/2/2012
10051005 Bowen, EliBowen, Eli 2929 VioletPurple 10/1/201310/1/2013
10061006 Bento, NunoBento, Nuno 3535 VertGreen 2/1/20132/1/2013
10071007 Hamilton, DavidHamilton, David 1010 JauneYellow 10/1/201310/1/2013
10081008 Han, MuHan, Mu 2828 OrangeOrange 1/2/20121/2/2012
10091009 Ito, ShuIto, Shu 2222 VioletPurple 2/1/20132/1/2013
10101010 Bowen, EliBowen, Eli 2828 VertGreen 10/1/201310/1/2013
10111011 Bowen, EliBowen, Eli 99 BleuBlue 10/15/201310/15/2013

La seconde table, ProjetEntreprise, est une liste de projets affectés d’une priorité (A, B ou C).This second table, CompanyProject, is a list of projects with an assigned priority, A, B, or C.

ProjetEntrepriseCompanyProject

NomProjetProjName PrioritéPriority
BleuBlue AA
RougeRed BB
VertGreen CC
JauneYellow CC
VioletPurple BB
OrangeOrange CC

Notez que chaque table possède une colonne de projet.Notice that each table has a project column. Chacune a un nom légèrement différent, mais les valeurs semblent identiques.Each are named slightly different, but the values look like they’re the same. Ce point est important, et nous y reviendrons un peu plus tard.That’s important, and we’ll get back to it in a little bit.

Nos deux tables étant importées dans un modèle, nous allons maintenant créer un rapport.Now that we have our two tables imported into a model, let’s create a report. La première chose que nous voulons obtenir est le nombre d’heures soumises par priorité de projet ; nous sélectionnons donc les champs Priorité et Heures.The first thing we want to get is the number of hours submitted by project priority, so we select Priority and Hours from Fields.

Si nous regardons notre table dans le canevas de rapport, nous constatons que le nombre d’heures est 256,00 pour chaque projet et que c’est également le 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. C’est clairement incorrect.Clearly this isn’t correct. Pourquoi ?Why? Car nous ne pouvons pas calculer une somme de valeurs à partir d’une table (champ Heures de la table Projet), ventilées en fonction des valeurs d’une autre table (champ Priorité de la table ProjetEntreprise) sans qu’il existe une relation entre ces deux tables.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.

Nous allons donc créer une relation entre ces deux tables.So, let’s create a relationship between these two tables.

Vous vous souvenez de ces colonnes communes aux deux tables avec un nom de projet et comportant des valeurs similaires ?Remember those columns we saw in both tables with a project name, but with values that look alike? Nous allons utiliser ces deux colonnes pour créer une relation entre nos tables.We’re going to use these two columns to create a relationship between our tables.

Pourquoi ces colonnes ?Why these columns? Si nous observons la colonne Projet du tableau HeuresProjet, nous y trouvons des valeurs telles que Bleu, Rouge, Jaune et Orange.Well, if we look at the Project column in the ProjectHours table, we see values like Blue, Red, Yellow, Orange, and so on. Comme vous pouvez le constater, plusieurs lignes contiennent la même valeur.In fact, we see several rows that have the same value. Nous avons donc de nombreuses valeurs de couleur pour Projet.In-effect, we have many color values for Project.

Par contre, la colonne NomProjet du tableau ProjetEntreprise ne contient qu’une occurrence de chaque valeur de couleur de projet.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. Chaque valeur de couleur de cette table est unique ; cela est important, car nous pouvons créer une relation entre les deux tables.Each color value in this table is unique, and that’s important, because we can create a relationship between these two tables. Dans ce cas, il s’agit d’une relation plusieurs-à-un.In this case, a many-to-one relationship. Dans une relation plusieurs-à-un, au moins une colonne d’une des tables doit contenir des valeurs uniques.In a many-to-one relationship, at least one column in one of the tables must contain unique values. Il existe des options avancées pour certaines relations, que nous verrons plus tard, mais pour l’instant nous allons créer une relation entre les colonnes Projet de chaque table.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.

Pour créer la relationTo create the new relationship

  1. Cliquez sur Gérer les relations.Click Manage Relationships.
  2. Dans Gérer les relations, cliquez sur Nouveau.In Manage Relationships, click New. La boîte de dialogue Créer une relation s’ouvre, dans laquelle nous pouvons sélectionner les tables, les colonnes et les paramètres avancés que nous souhaitons pour notre relation.This opens the Create Relationship dialog, where we can select the tables, columns, and any advanced settings we want for our relationship.
  3. Dans la première table, sélectionnez HeuresProjet, puis la colonne Projet.In the first table, select ProjectHours, then select the Project column. Il s’agit du côté « plusieurs » de notre relation.This is the many side of our relationship.
  4. Dans la seconde table, sélectionnez ProjetEntreprise, puis la colonne NomProjet.In the second table, select CompanyProject, then select the ProjName column. Il s’agit du côté « un » de notre relation.This is the one side of our relationship.
  5. Cliquez sur OK dans les boîtes de dialogue Créer une relation et Gérer les relations.Go ahead and click OK in both the Create Relationship dialog and the Manage Relationships dialog.

Pour que la démonstration soit le plus explicite, nous avons créé la relation manuellement.In the interest of full disclosure, you really just created this relationship the hard way. Nous aurions pu cliquer simplement sur le bouton Détection automatique dans la boîte de dialogue Gérer les relations.You could've just clicked on the Autodetect button in the Manage Relationships dialog. En fait, la fonctionnalité Détection automatique l’aurait déjà fait pour vous quand vous avez chargé les données si les deux colonnes avaient le même nom.In-fact, Autodetect would have already done it for you when you loaded the data if both columns had the same name. Mais nous n’aurions eu aucun mérite.But, what’s the challenge in that?

À présent, réexaminons la table dans le Canevas de rapport.Now, let’s look at the table in our Report canvas again.

Ça va beaucoup mieux maintenant, non ?Now that looks a whole lot better, doesn’t it?

Quand nous additionnons les heures par Priorité, Power BI Desktop recherche chaque instance des valeurs de couleur uniques dans la table de choix ProjetEntreprise, puis recherche chaque instance de chacune de ces valeurs dans la table ProjetEntreprise et calcule une somme totale pour chaque valeur unique.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.

C’était assez facile. En fait, la fonctionnalité Détection automatique aurait même pu vous éviter tout ce travail.That was pretty easy, in-fact, with Autodetect, you might not even have to do this much.

Présentation des options avancéesUnderstanding advanced options

Quand une relation est créée, manuellement ou avec la fonctionnalité Détection automatique, Power BI Desktop configure automatiquement les options avancées en fonction des données de vos tables.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. Vous pouvez configurer les propriétés avancées d’une relation en développant Options avancées dans la boîte de dialogue de création/modification de relations.You can configure advanced relationship properties by expanding Advanced options in the Create/Edit relationship dialog.

Comme nous l’avons dit, ces propriétés sont généralement définies automatiquement et vous n’avez pas besoin d’y toucher ; toutefois, vous pouvez être amené à configurer les options avancées vous-même.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.

Les futures mises à jour des données nécessitent une cardinalité différenteFuture updates to the data require a different cardinality

Normalement, Power BI Desktop peut déterminer automatiquement la meilleure cardinalité pour la relation.Normally, Power BI Desktop can automatically determine the best cardinality for the relationship. Si vous avez besoin de remplacer le paramétrage automatique car vous savez que les données changeront ultérieurement, vous pouvez utiliser le contrôle Cardinalité.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. Examinons un exemple où nous devons sélectionner une cardinalité différente.Let’s look at an example where we need to select a different cardinality.

La table PrioritéProjetEntreprise ci-dessous répertorie tous les projets de l’entreprise et leur priorité.The CompanyProjectPriority table below is a list of all company projects and their priority. La table BudgetProjet regroupe les projets pour lesquels un budget a été approuvé.The ProjectBudget table is the set of projects for which budget has been approved.

BudgetProjetProjectBudget

ProjetsApprouvésApproved Projects AllocationBudgetBudgetAllocation DateAllocationAllocationDate
BleuBlue 40,00040,000 12/1/201212/1/2012
RougeRed 100,000100,000 12/1/201212/1/2012
VertGreen 50,00050,000 12/1/201212/1/2012

PrioritéProjetEntrepriseCompanyProjectPriority

ProjetProject PrioritéPriority
BleuBlue AA
RougeRed BB
VertGreen CC
JauneYellow CC
VioletPurple BB
OrangeOrange CC

Si nous créons une relation entre la colonne Projet de la table PrioritéProjetEntreprise et la colonne ProjetsApprouvés de la table BudgetProjet, comme suit :If we create a relationship between the Project column in the CompanyProjectPriority table and ApprovedProjects column in the ProjectBudget table, like this:

La cardinalité prend automatiquement la valeur Un à un (1:1) et la direction du filtrage croisé la valeur À double sens (comme indiqué).Cardinality is automatically set to One-to-One (1:1), and cross filtering to be Both (as shown). En effet, pour Power BI Desktop, la meilleure combinaison des deux tables ressemble à ceci :This is because to Power BI Desktop, the best combination of the two tables really looks like this:

ProjetProject PrioritéPriority AllocationBudgetBudgetAllocation DateAllocationAllocationDate
BleuBlue AA 40,00040,000 12/1/201212/1/2012
RougeRed BB 100,000100,000 12/1/201212/1/2012
VertGreen CC 50,00050,000 12/1/201212/1/2012
JauneYellow CC

VioletPurple BB

OrangeOrange CC

Il existe une relation un à un entre nos deux tables, car la colonne Projet de la table combinée ne contient pas de doublons.There is a one-to-one relationship between our two tables because there are no repeating values in the combined table’s Project column. La colonne Projet est unique, car chaque valeur n’y apparaît qu’une seule fois. Ainsi, les lignes des deux tables peuvent être combinées directement sans aucune duplication.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.

Toutefois, supposons que les données sont censées changer à la prochaine actualisation.But, let’s say you know the data will change the next time you refresh it. Une version actualisée de la table BudgetProjet fait apparaître des lignes supplémentaires pour les valeurs Bleu et Rouge :A refreshed version of the ProjectBudget table now has additional rows for Blue and Red:

BudgetProjetProjectBudget

ProjetsApprouvésApproved Projects AllocationBudgetBudgetAllocation DateAllocationAllocationDate
BleuBlue 40,00040,000 12/1/201212/1/2012
RougeRed 100,000100,000 12/1/201212/1/2012
VertGreen 50,00050,000 12/1/201212/1/2012
BleuBlue 80,00080,000 6/1/20136/1/2013
RougeRed 90,00090,000 6/1/20136/1/2013

Cela signifie que la meilleure combinaison des deux tables ressemble maintenant à ceci :This means the best combination of the two tables now really looks like this:

ProjetProject PrioritéPriority AllocationBudgetBudgetAllocation DateAllocationAllocationDate
BleuBlue AA 40,00040,000 12/1/201212/1/2012
RougeRed BB 100,000100,000 12/1/201212/1/2012
VertGreen CC 50,00050,000 12/1/201212/1/2012
JauneYellow CC

VioletPurple BB

OrangeOrange CC

BleuBlue AA 8000080000 6/1/20136/1/2013
RougeRed BB 9000090000 6/1/20136/1/2013

Dans cette nouvelle table combinée, la colonne Projet contient des doublons.In this new combined table, the Project column has repeating values. Les deux tables d’origine n’auront pas de relation un à un une fois la table actualisée.The two original tables won’t have a one-to-one relationship once the table is refreshed. Dans ce cas, comme nous savons que ces mises à jour ultérieures engendreront des doublons dans la colonne Projet, nous souhaitons définir la cardinalité sur Plusieurs à un (*:1), avec la composante « plusieurs » côté BudgetProjet et la composante « un » côté ProjetEntreprise.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.

Ajustement de la direction du filtrage croisé pour un jeu complexe de tables de relationsAdjusting cross filter direction for a complex set of tables of relationships

Pour la plupart des relations, la direction du filtrage croisé est définie sur « À double sens ».For most relationships, the cross filter direction is set to ‘Both’. Toutefois, dans certaines circonstances plus rares, vous pouvez être amené à la définir différemment, comme dans le cas où vous importez un modèle à partir d’une ancienne version de Power Pivot, où chaque relation est définie sur une direction à sens unique.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.

Le paramètre À double sens permet à Power BI Desktop de traiter tous les aspects des tables connectées comme s’il s’agissait d’une table unique.The Both setting enables Power BI Desktop to treat all aspects of connected tables as if they are a single table. Dans certaines situations, toutefois, Power BI Desktop ne peut pas définir la direction du filtrage croisé d’une relation sur « À double sens » tout en conservant un ensemble non ambigu de valeurs par défaut pour la création de rapports.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. En règle générale, la direction du filtrage croisé d’une relation n’est pas définie sur À double sens si cela risque de créer une ambiguïté.If a relationship cross filter direction isn't set to Both, then it’s usually because it would create ambiguity. Si la valeur par défaut de la direction du filtrage croisé ne fonctionne pas, essayez de la définir sur une table particulière ou sur À double sens.If the default cross filter setting isn’t working for you, try setting it to a particular table or Both.

Le filtrage croisé À sens unique fonctionne dans de nombreuses situations.Single direction cross filtering works for many situations. En fait, si vous importez un modèle de données Power Pivot dans Excel 2013 ou version antérieure, toutes les relations sont définies sur À sens unique.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. Dans le cas d’une direction à sens unique, les choix de filtrage dans les tables connectées agissent sur la table où se produit l’agrégation.Single direction means that filtering choices in connected tables work on the table where aggregation work is happening. Parfois, le filtrage croisé peut être un peu difficile à comprendre. Nous allons donc étudier un exemple.Sometimes, understanding cross filtering can be a little difficult, so let’s look at an example.

Dans le cas du filtrage croisé à sens unique, si vous créez un rapport qui récapitule les heures de projet, vous pouvez choisir de récapituler (ou filtrer) par ProjetEntreprise, Priorité ou EmployéEntreprise, Ville.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. Si toutefois vous souhaitez obtenir le nombre d’employés par projet (ce qui est moins fréquent), cela ne fonctionne pas.If however, you want to count the number of employee per projects (a less common question), it won’t work. Vous obtenez une colonne de valeurs identiques.You’ll get a column of values that are all the same. Dans l’exemple ci-dessous, la direction du filtrage croisé des deux relations est définie sur une direction à sens unique, en l’occurrence vers la table HeuresProjet :In the example below, both relationships cross filtering direction is set to a single direction – towards the ProjectHours table:

La spécification du filtrage s’étend de ProjetEntreprise à EmployéEntreprise (comme illustré dans l’image ci-dessous) mais ne va pas jusqu’à Employé.Filter specification will flow from CompanyProject to CompanyEmployee (as shown in the image below) but, it won’t flow up to CompanyEmployee. Toutefois, si vous définissez la direction du filtrage croisé sur À double sens, l’opération fonctionne.However, if you set the cross filtering direction to Both it will work. Le paramètre À double sens permet d’étendre la spécification du filtrage à Employé.The Both setting allows the filter specification to flow up to Employee.

Avec la direction du filtrage croisé définie sur À double sens, notre rapport semble désormais correct :With the cross filtering direction set to Both, our report now appears correct:

Le filtrage croisé à double sens convient pour un modèle de relations entre tables tel que le modèle ci-dessus.Cross filtering both directions works well for a pattern of table relationships that look like the pattern above. On parle généralement de schéma en étoile, comme illustré ci-dessous :This is most commonly called a star schema, like this:

La direction du filtrage croisé ne fonctionne pas correctement avec un modèle plus général fréquent dans les bases de données, comme dans le diagramme ci-dessous :Cross filtering direction does not work well with a more general pattern often found in databases, like in this diagram:

Si vous disposez d’un modèle de tables comme celui-ci, avec des boucles, le filtrage croisé peut créer un ensemble de relations ambigu.If you have a table pattern like this, with loops, then cross filtering can create an ambiguous set of relationships. Par exemple, si vous additionnez les valeurs d’un champ de la table X et que vous choisissez de filtrer par un champ de la table Y, il est difficile de savoir si le filtrage doit passer par la table supérieure ou inférieure.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. Un exemple courant de ce genre de modèle est TableX (une table de ventes avec des données réelles) et TableY (une table contenant des données de budget).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. Les tables intermédiaires sont des tables de choix utilisées par les deux tables, par exemple Division ou Région.Then, the tables in the middle are lookup tables that both tables use, such as Division or Region.

Comme dans le cas des relations actives/inactives, Power BI Desktop ne vous autorise pas à définir une relation À double sens si cela crée une ambiguïté dans les rapports.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. Face à cette situation, vous pouvez appliquer les deux procédures suivantes, parmi celles les plus couramment utilisées :There are several different ways you can deal with this, here are the two most common:

  • Supprimez les relations ou marquez-les comme inactives pour réduire l’ambiguïté.Delete or mark relationships as inactive to reduce ambiguity. Vous pourrez peut-être ensuite définir le filtrage croisé d’une relation sur À double sens.Then you might be able to set a relationship cross filtering as Both.
  • Importez une table deux fois (avec un nom différent la deuxième fois) pour éliminer les boucles.Bring in a table twice (with a different name the second time) to eliminate loops. Ainsi, le modèle de relations s’apparente à un schéma en étoile.This makes the pattern of relationships like a star schema. Avec un schéma en étoile, toutes les relations peuvent être À double sens.With a star schema all of the relationships can be set to Both.

Relation active incorrecteWrong active relationship

Quand Power BI Desktop crée automatiquement des relations, il rencontre parfois plus d’une relation entre deux tables.When Power BI Desktop automatically creates relationships, it sometimes encounters more than one relationship between two tables. Dans ces cas de figure, une seule des relations est définie comme relation active.When this happens only one of the relationships is set to be active. La relation active fait office de relation par défaut. Ainsi, quand vous choisissez des champs dans deux tables différentes, Power BI Desktop peut créer automatiquement une visualisation pour vous.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. Toutefois, dans certains cas, la relation sélectionnée automatiquement peut être incorrecte.However, in some cases the automatically selected relationship can be wrong. Vous pouvez utiliser la boîte de dialogue Gérer les relations pour définir une relation comme active ou inactive, ou vous pouvez définir la relation active dans la boîte de dialogue Modifier la relation.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.

Pour s’assurer qu’il y a une relation par défaut, Power BI Desktop n’autorise qu’une seule relation active entre deux tables à tout moment donné.To ensure there’s a default relationship, Power BI Desktop only allows a single active relationship between two tables at a given time. Ainsi, vous devez définir la relation actuelle comme inactive, puis définir la relation de votre choix comme relation active.So, you must first set the current relationship as inactive and then set the relationship you want to be active.

Examinons un exemple.Let’s look at an example. Voici deux tables, TicketsProjet et RôleEmployé.This first table is ProjectTickets, and the next table is EmployeeRole.

TicketsProjetProjectTickets

TicketTicket OuvertParOpenedBy SoumisParSubmittedBy HeuresHours ProjetProject DateSoumissionDateSubmit
10011001 Perham, TomPerham, Tom Brewer, AlanBrewer, Alan 2222 BleuBlue 1/1/20131/1/2013
10021002 Roman, DanielRoman, Daniel Brewer, AlanBrewer, Alan 2626 RougeRed 2/1/20132/1/2013
10031003 Roth, DanielRoth, Daniel Ito, ShuIto, Shu 3434 JauneYellow 12/4/201212/4/2012
10041004 Perham, TomPerham, Tom Brewer, AlanBrewer, Alan 1313 OrangeOrange 1/2/20121/2/2012
10051005 Roman, DanielRoman, Daniel Bowen, EliBowen, Eli 2929 VioletPurple 10/1/201310/1/2013
10061006 Roth, DanielRoth, Daniel Bento, NunoBento, Nuno 3535 VertGreen 2/1/20132/1/2013
10071007 Roth, DanielRoth, Daniel Hamilton, DavidHamilton, David 1010 JauneYellow 10/1/201310/1/2013
10081008 Perham, TomPerham, Tom Han, MuHan, Mu 2828 OrangeOrange 1/2/20121/2/2012
10091009 Roman, DanielRoman, Daniel Ito, ShuIto, Shu 2222 VioletPurple 2/1/20132/1/2013
10101010 Roth, DanielRoth, Daniel Bowen, EliBowen, Eli 2828 VertGreen 10/1/201310/1/2013
10111011 Perham, TomPerham, Tom Bowen, EliBowen, Eli 99 BleuBlue 10/15/201310/15/2013

RôleEmployéEmployeeRole

EmployéEmployee RôleRole
Bento, NunoBento, Nuno Chef de projetProject Manager
Bowen, EliBowen, Eli Chargé de projetProject Lead
Brewer, AlanBrewer, Alan Chef de projetProject Manager
Hamilton, DavidHamilton, David Chargé de projetProject Lead
Han, MuHan, Mu Chargé de projetProject Lead
Ito, ShuIto, Shu Chargé de projetProject Lead
Perham, TomPerham, Tom Parrain de projetProject Sponsor
Roman, DanielRoman, Daniel Parrain de projetProject Sponsor
Roth, DanielRoth, Daniel Parrain de projetProject Sponsor

Il existe en fait ici deux relations :There are actually two relationships here. une entre le champ SoumisPar de la table TicketsProjet et le champ Employé de la table RôleEmployé, l’autre entre le champ OuvertPar de la table TicketsProjet et le champ Employé de la table RôleEmployé.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.

Si nous ajoutons les deux relations au modèle (OuvertPar en premier), la boîte de dialogue Gérer les relations indique que la relation OuvertPar est active :If we add both relationships to the model (OpenedBy first), then the Manage Relationships dialog will show that OpenedBy is active:

Maintenant, si nous créons, dans le canevas de rapport, un rapport qui utilise les champs Rôle et Employé de la table RôleEmployé et le champ Heures de la table TicketsProjet dans une visualisation de table, seuls apparaissent les parrains de projet, car eux seuls ont ouvert un ticket de projet.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.

Nous pouvons modifier la relation active pour remplacer OuvertPar par SoumisPar.We can change the active relationship and get SubmittedBy instead of OpenedBy. Dans Gérer les relations, nous décochons la relation TicketsProjet(OuvertPar)/RôleEmployé(Employé) et nous cochons la relation TicketsProjet(SoumisPar)/RôleEmployé(Employé).In Manage Relationships, we uncheck the ProjectTickets(OpenedBy) to EmployeeRole(Employee) relationship, and then we check the Project Tickets(SubmittedBy) to EmployeeRole(Employee) relationship.

Afficher toutes les relations dans la vue RelationSee all of your relationships in Relationship View

Parfois, votre modèle comporte plusieurs tables avec des relations complexes.Sometimes your model has multiple tables and complex relationships between them. La vue Relation dans Power BI Desktop montre toutes les relations dans votre modèle, leur direction et leur cardinalité dans un diagramme personnalisable et facile à comprendre.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. Pour plus d’informations, consultez Vue Relation dans Power BI Desktop.To learn more, see Relationship View in Power BI Desktop.