Power BI Desktop でのリレーションシップの作成と管理Create and manage relationships in Power BI Desktop

複数のテーブルをインポートする際、これらのすべてのテーブルからデータを使用して分析を実行する可能性が高くなります。When you import multiple tables, chances are you’re going to do some analysis using data from all those tables. 結果を正確に計算し、レポートに正しい情報を表示するためには、これらのテーブル間のリレーションシップが必要です。Relationships between those tables are necessary in order to accurately calculate results and display the correct information in your reports. Power BI Desktop を使用すると、これらのリレーションシップを簡単に作成できます。Power BI Desktop makes creating those relationships easy. 実際、ほとんどの場合、自動検出機能が実行してくれるため、何もすることはありません。In-fact, in most cases you won’t have to do anything, the Autodetect feature can do it for you. ただし、場合によっては、自分でリレーションシップを作成したり、リレーションシップにいくつかの変更を加えたりすることが必要な場合があります。However, in some cases you might have to create relationships yourself, or you might need to make some changes to a relationship. いずれの場合も、Power BI Desktop におけるリレーションシップおよびその作成方法と編集方法を理解することが重要です。Either way, it’s important to understand relationships in Power BI Desktop and how to create and edit them.

読み込み中の自動検出Autodetect during load

データが読み込まれるときに、同時に 2 つ以上のテーブルを照会する場合は、Power BI Desktop は、検索し、リレーションシップを作成するを試みます。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. カーディナリティ、クロス フィルターの方向、およびアクティブ プロパティが自動的に設定されます。Cardinality, Cross filter direction, and Active properties are automatically set. Power BI Desktop は、潜在的なリレーションシップがあるかどうかを判断するために、クエリを実行しているテーブルの列名を見ます。Power BI Desktop looks at column names in the tables you are querying to determine if there are any potential relationships. そのようなリレーションシップがある場合は、自動的に作成されます。If there are, those relationships are created automatically. Power BI Desktop が判断できない場合の信頼度の高いレベルでは、一致するもの、リレーションシップは自動的に作成されません。If Power BI Desktop cannot determine with a high level of confidence there is a match, it does not automatically create the relationship. その場合でも、[リレーションシップの管理] ダイアログ ボックスを使用すれば、リレーションシップを作成または編集できます。You can still use the Manage Relationships dialog to create or edit relationships.

自動検出を使用したリレーションシップの作成Create a relationship by using Autodetect

[ホーム] タブで、 [リレーションシップの管理] > [自動検出] の順にクリックします。On the Home tab, click Manage Relationships > AutoDetect.

手動でのリレーションシップの作成Create a relationship manually

  1. [ホーム] タブで、 [リレーションシップの管理] > [新規] の順にクリックします。On the Home tab, click Manage Relationships > New.
  2. リレーションシップの作成ダイアログ ボックスで、最初のテーブルのドロップダウン リストで、テーブルを選択し、リレーションシップで使用する列を選択します。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. 2 番目のテーブルのドロップダウン リストで、関係するその他のテーブルを選択しを使用したいその他の列を選択OKします。In the 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.

既定では、Power BI Desktop が自動的に構成カーディナリティ (の方向)、クロス フィルター方向、およびアクティブ プロパティを新しいリレーションシップです。ただし、必要に応じて設定を変更できます。By default, Power BI Desktop automatically configures the Cardinality (direction), Cross filter direction, and Active properties for your new relationship; however, you can change the settings if necessary. 詳細については、この記事で後述する「詳細設定オプションについて」のセクションを参照してください。To learn more, see the Understanding additional options section later in this article.

というエラーが表示されます一意の値が、列の 1 つ必要リレーションシップの選択したテーブルの一意の値がある場合。You'll see an error that states One of the columns must have unique values if none of the tables selected for the relationship has unique values. リレーションシップの少なくとも 1 つのテーブルに別個の (一意の) キー値リストが含まれている必要があります。これはあらゆるリレーショナル データベース技術における共通の要件です。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.

このエラーに遭遇した場合、いくつかの方法で問題を解決できます。If you encounter that error, there are a couple ways to fix the issue:

  • "重複行の削除" を利用し、一意の値を含む列を作成します。Use "Remove Duplicate Rows" to create a column with unique values. この手法の短所は、重複行が削除されると情報が失われることです。多くの場合、キー (行) は正当な理由があって複製されます。The drawback to this approach is that you will lose information when duplicate rows are removed, and often a key (row) is duplicated for good reason.
  • 個別キー値の一覧で構成される中間テーブルをモデルに追加します。このモデルがリレーションシップの両方の元の列にリンクされます。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.

詳細についてを参照してください、ブログの投稿します。For more detailed information, see the blog post.

リレーションシップの編集Edit a relationship

  1. [ホーム] タブで、 [リレーションシップの管理] をクリックします。On the Home tab, click Manage Relationships.
  2. リレーションシップの管理 ダイアログ ボックスで、リレーションシップを選択してから [編集] をクリックします。In the Manage Relationships dialog, select the relationship, then click Edit.

詳細設定オプションの構成Configure additional options

リレーションシップを作成または編集するときは、詳細設定オプションを構成できます。When you create or edit a relationship, you can configure additional options. 既定では、追加のオプションが自動的に構成列のデータに基づいてリレーションシップごとに異なることが最善の推測に基づいています。By default, additional options are automatically configured based on a best guess, which can be different for each relationship based on the data in the columns.


多対一 (*: 1) - ほとんどの一般的な既定値の型は、1 つのテーブルで列の値、およびその他の関連テーブルの 1 つ以上のインスタンスであることができます、多くの場合、把握、ルックアップ テーブルとして値のインスタンスが 1 つだけです。Many to One (*:1) - The most common, default type, which 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.

一対一 (1:1) - 1 つのテーブル内の列が、特定の値の 1 つだけのインスタンスとその他の関連テーブルには、特定の値の 1 つだけのインスタンス。One to One (1:1) - 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.

多対多のリレーションシップ:複合モデルでは、テーブル内の一意の値の要件を削除するには、テーブル間の多対多のリレーションシップを確立できます。Many-to-many relationships: With composite models, you can establish many-to-many relationships between tables, which removes requirements for unique values in tables. また、リレーションシップを作成するためだけに新しいテーブルを導入するなどの以前の回避策も除外されます。It also removes previous workarounds, such as introducing new tables only to establish relationships. 詳細については、多対多カーディナリティのリレーションシップに関するページを参照してください。For more detailed information, see Relationships with a many-many cardinality.

カーディナリティを変更するタイミングの詳細については、この記事で後述する「詳細設定オプションについて」を参照してください。See the Understanding additional options section later in this article for more details about when to change cardinality.

クロス フィルターの方向Cross filter direction

どちらも- 最も一般的な既定の方向は、フィルター処理のことを意味するため、両方のテーブルが 1 つのテーブルである場合のように扱われます。Both - The most common, default direction, which means for filtering purposes, both tables are treated as if they're a single table. 両方は数がその周囲にある参照テーブルの 1 つのテーブルでうまく機能します。Both works well with a single table that has a number of lookup tables that surround it. 一例として、部門のルックアップ テーブルのある販売実績テーブルがあります。An example is a Sales actuals table with a lookup table for department. これは多くの場合、スター スキーマ構成 (複数のルックアップ テーブルと 1 つの中心テーブル) と呼ばれます。ただし、複数のルックアップ テーブル (一部は共通) を含むテーブルが 2 つ以上ある場合は、"双方向" の設定を使用したいとは思わないでしょう。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. 前の例で言えば、この場合、各部門のターゲット予算を記録する予算売上テーブルもあるということです。To continue the previous example, in this case, you also have a budget sales table that records target budget for each department. そして、部門テーブルが、売上テーブルと予算のテーブルの両方に接続されます。And, the department table is connected to both the sales and the budget table. こうした構成を "双方向" の設定で行うことは避けてください。Avoid the Both setting for this kind of configuration.

1 つ-接続されたテーブルでフィルター処理の選択肢は、値が集約されているテーブルで機能します。Single - Filtering choices in connected tables work on the table where values are being aggregated. Excel 2013 以前のデータ モデルに Power Pivot をインポートすると、すべてのリレーションシップが一方向になります。If you import a Power Pivot in Excel 2013 or earlier data model, all relationships will have a single direction.

クロス フィルターの方向を変更するタイミングの詳細については、この記事の後半にある「詳細設定オプションについて」を参照してください。See the Understanding additional options section later in this article for more details about when to change cross filter direction.

このリレーションシップをアクティブにするMake this relationship active

チェックした場合、リレーションシップはアクティブな既定のリレーションシップとして機能することを意味します。When checked, this means the relationship serves as the active, default relationship. 2 つのテーブル間に複数のリレーションシップがある場合、両方のテーブルを含む視覚化を Power BI Desktop が自動的に作成するには、アクティブなリレーションシップが使用されます。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.

特定のリレーションシップをアクティブにするタイミングの詳細については、この記事で後述する「詳細設定オプションについて」を参照してください。See the Understanding additional options section later in this article for more details about when to make a particular relationship active.

リレーションシップについてUnderstanding relationships

2 つのテーブルをリレーションシップでつなぐと、両方のテーブルにあるデータを 1 つのテーブルであるかのように操作できます。これにより、リレーションシップの詳細について考慮したり、インポートする前にこれらのテーブルを 1 つのテーブルにフラット化したりする必要がなくなります。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. 多くの場合、Power BI Desktop は自動的にリレーションシップを作成できるため、自分でこれらのリレーションシップを作成する必要はありません。In many situations, Power BI Desktop can automatically create relationships for you, so creating those relationships yourself might not even be needed. ただし、Power BI Desktop は、2 つのテーブル間のリレーションシップが存在する度合いの高度で判断できない場合は、自動的に作成されませんリレーションシップ。However, if Power BI Desktop can’t determine with a high-degree of certainty that a relationship between two tables should exist, it does not automatically create the relationship. その場合は、リレーションシップを作成する必要があります。In that case, you must create the relationship.

クイック チュートリアル、効果的に表示する Power BI Desktop でのリレーションシップのしくみを見ていきましょう。Let’s go through a quick tutorial, to better show you how relationships work in Power BI Desktop.


このレッスンは自分で完了できます。You can complete this lesson yourself. 下の [ProjectHours] テーブルを Excel ワークシートにコピーし、すべてのセルを選択してから、 [挿入] > [テーブル] の順にクリックします。Copy the ProjectHours table below into an Excel worksheet, select all of the cells, click INSERT > Table. [テーブルの作成] ダイアログ ボックスで、 [OK] をクリックします。In the Create Table dialog, just click OK. 次に、 [テーブル名]「ProjectHours」 と入力します。Then in Table Name, type ProjectHours. [CompanyProject] テーブルで同じ操作を行います。Do the same for the CompanyProject table. Power BI Desktop の [データの取得] を使用して、データをインポートします。You can then import the data by using Get Data in Power BI Desktop. データ ソースとして、ブックとテーブルを選択します。Select your workbook and tables as a data source.

この最初のテーブル [ProjectHours] は、ある人が特定のプロジェクトで作業した時間数を記録する作業チケットのレコードです。This first table, ProjectHours, is a record of work tickets that record the number of hours a person has worked on a particular project.


TicketTicket SubmittedBySubmittedBy HoursHours ProjectProject DateSubmitDateSubmit
10011001 Brewer, AlanBrewer, Alan 2222 Blue 2013 年 1 月 1 日1/1/2013
10021002 Brewer, AlanBrewer, Alan 2626 Red 2013 年 2 月 1 日2/1/2013
10031003 Ito, ShuIto, Shu 3434 Yellow 2012 年 12 月 4 日12/4/2012
10041004 Brewer, AlanBrewer, Alan 1313 オレンジ色Orange 2012 年 1 月 2 日1/2/2012
10051005 Bowen, EliBowen, Eli 2929 Purple 2013 年 10 月 1 日10/1/2013
10061006 Bento, NunoBento, Nuno 3535 Green 2013 年 2 月 1 日2/1/2013
10071007 Hamilton, DavidHamilton, David 1010 Yellow 2013 年 10 月 1 日10/1/2013
10081008 Han, MuHan, Mu 2828 オレンジ色Orange 2012 年 1 月 2 日1/2/2012
10091009 Ito, ShuIto, Shu 2222 Purple 2013 年 2 月 1 日2/1/2013
10101010 Bowen, EliBowen, Eli 2828 Green 2013 年 10 月 1 日10/1/2013
10111011 Bowen, EliBowen, Eli 99 Blue 2013 年 10 月 15 日10/15/2013

2 番目のテーブル [CompanyProject] は、優先順位 A、B、または C が割り当てられたプロジェクトの一覧です。This second table, CompanyProject, is a list of projects with an assigned priority, A, B, or C.


ProjNameProjName PriorityPriority
Blue AA
Red BB
Green CC
Yellow CC
Purple BB
オレンジ色Orange CC

各テーブルにプロジェクトの列があることに注意してください。Notice that each table has a project column. それぞれのテーブルで名前はわずかに異なりますが、値は同じように見えます。Each is named slightly different, but the values look like they’re the same. 重要なことといたします内ですぐにします。That’s important, and we’ll get back to it in soon.

2 つのテーブルをモデルにインポートしたので、レポートを作成してみましょう。Now that we have our two tables imported into a model, let’s create a report. 最初に取得するものは、プロジェクトの優先度ごとに送信された時間数です。そのため、フィールドから [優先順位][時間数] を選びます。The first thing we want to get is the number of hours submitted by project priority, so we select Priority and Hours from Fields.

レポート キャンバスでテーブルを見ると、各プロジェクトの時間数が 256.00 で、これが合計でもあることが分かります。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. これは明らかに正しくありません。Clearly this isn’t correct. なぜでしょうか。Why? 理由は、2 つのテーブル間にリレーションシップがない状態では、1 つのテーブル ([プロジェクト] テーブルの [時間数]) を別のテーブル ([CompanyProject] テーブルの [優先順位]) でスライスして値の合計を計算できないためです。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.

そこで、これら 2 つのテーブル間のリレーションシップを作成しましょう。So, let’s create a relationship between these two tables.

両方のテーブルのプロジェクト名が含まれる列を見たとき、値が似ていたことを覚えていますか。Remember those columns we saw in both tables with a project name, but with values that look alike? ここでは、これら 2 つの列を使用して、テーブル間のリレーションシップを作成します。We’re going to use these two columns to create a relationship between our tables.

なぜこれらの列なのでしょうか。Why these columns? [ProjectHours] テーブルの [プロジェクト] 列を見ると、青、赤、黄、オレンジ色などの値があります。Well, if we look at the Project column in the ProjectHours table, we see values like Blue, Red, Yellow, Orange, and so on. そして、いくつかの行が同じ値を持っていることがわかります。In fact, we see several rows that have the same value. また、プロジェクトには多数の色の値があります。In-effect, we have many color values for Project.

[CompanyProject] テーブルの [ProjName] 列を見ると、プロジェクトの色の値ごとに 1 つの色の値だけがあります。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. このテーブルの各色の値は一意です。このことは、これら 2 つのテーブル間にリレーションシップを作成できるようになるという点で重要です。Each color value in this table is unique, and that’s important, because we can create a relationship between these two tables. この場合は、多対一リレーションシップです。In this case, a many-to-one relationship. 多対一のリレーションシップでは、いずれかのテーブルの少なくとも 1 つの列に一意の値が含まれる必要があります。In a many-to-one relationship, at least one column in one of the tables must contain unique values. 一部のリレーションシップにはいくつかの詳細設定オプションがあります。これらについては後で説明しますが、ここでは 2 つのテーブルのそれぞれにある [プロジェクト] 列の間にリレーションシップを作成しましょう。There are some additional 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.

リレーションシップを新規作成するにはTo create the new relationship

  1. [リレーションシップの管理] をクリックします。Click Manage Relationships.
  2. リレーションシップの管理、 をクリックして新規を開く、リレーションシップの作成ダイアログ ボックスで、テーブル、列、および追加の設定を選択します、リレーションシップです。In Manage Relationships, click New to open the Create Relationship dialog, where we can select the tables, columns, and any additional settings we want for our relationship.
  3. 最初のテーブルで、 [ProjectHours] をクリックしてから、 [プロジェクト] 列をクリックします。In the first table, select ProjectHours, then select the Project column. これがリレーションシップの "多" 側です。This is the many side of our relationship.
  4. 2 番目のテーブルで、 [CompanyProject] をクリックしてから、 [ProjName] 列をクリックします。In the second table, select CompanyProject, then select the ProjName column. これがリレーションシップの "一" 側です。This is the one side of our relationship.
  5. 先に進んで、 [リレーションシップの作成] ダイアログ ボックスと [リレーションシップの管理] ダイアログ ボックスの両方で [OK] をクリックします。Go ahead and click OK in both the Create Relationship dialog and the Manage Relationships dialog.

厳密なは、作成したこの関係苦労します。In the interest of full disclosure, you just created this relationship the hard way. でしたがクリックしたリレーションシップの管理 ダイアログで 自動検出 ボタンをクリックします。You could have just clicked on the Autodetect button in the Manage Relationships dialog. 実際、両方の列の名前が同じであったとしたら、データが読み込まれるときに自動検出は既に実行されているはずです。In fact, Autodetect would have already done it for you when you loaded the data if both columns had the same name. しかし、そこにどのような課題があるのでしょうか。But, what’s the challenge in that?

ここで、もう一度レポート キャンバスで、テーブルを見てみましょう。Now, let’s look at the table in our Report canvas again.

全体に外観が良くなっていますね。Now that looks a whole lot better, doesn’t it?

Power BI Desktop の CompanyProject のルックアップ テーブル内の一意の色値のすべてのインスタンスを検索して、[companyproject] テーブルでこれらの値のそれぞれのインスタンスを探しして、一意の値ごとの合計を計算の優先順位ごとに時間数を合計します.When we sum up hours by Priority, Power BI Desktop looks 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.

実際には、自動検出を使用できないことがありますもこれを行う簡単でした。That was easy, in fact, with Autodetect, you might not even have to do this much.

詳細設定オプションについてUnderstanding additional options

自動検出または手動で作成する 1 つで、リレーションシップが作成されたときに Power BI Desktop には、テーブル内のデータに基づく追加のオプションが自動的に構成されます。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. [リレーションシップの作成] または [リレーションシップの編集] ダイアログ ボックスの最下部で、これらの詳細なリレーションシップ プロパティを構成できます。You can configure these additional relationship properties located in the lowest portion of the Create/Edit relationship dialog.

先ほど述べたとおり、これらの設定は自動的に行われるため、操作の必要はありません。ただし、自分でこれらのオプションを構成する必要が生じる可能性がある状況がいくつかあります。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 these options yourself.

リレーションシップの自動更新Automatic relationship updates

Power BI の処理方法と、レポートおよびモデルでリレーションシップを自動的に調整を管理することができます。You can manage how Power BI treats and automatically adjusts relationships in your reports and models. Power BI がリレーションシップのオプションを処理する方法を指定するには、選択ファイル > オプションと設定 > オプションから Power BI Desktop を選択し、データの読み込み左側のウィンドウでします。To specify how Power BI handles relationships options, select File > Options and settings > Options from Power BI Desktop, then select Data Load in the left pane. 表示するためのオプションリレーションシップします。You then see options for Relationships.


選択されている、有効になっている次の 3 つのオプションがあります。There are three options that can be selected and enabled.

最初のオプションはデータ ソースからリレーションシップをインポート、それが既定で選択されています。The first option is Import relationships from data sources, and it is selected by default. 選択すると、Power BI をプライマリ]、[外部キーなど、データ ソースで定義されているリレーションシップのチェック、データ ウェアハウス リレーションシップのキーします。When selected, Power BI checks for relationships defined in your data source, such as foreign key / primary key relationships in your data warehouse. このようなリレーションシップが存在して、最初にデータを読み込むときに、Power BI データ モデルにミラーリングされます。If such relationships exist, they are mirrored into the Power BI data model when you initially load data. このオプションを使用すると、迅速に、モデルの使用を開始ではなく検索または自分でこれらのリレーションシップを定義するを必要とすることができます。This option enables you to quickly begin working with your model, rather than requiring you find or define those relationships yourself.

2 番目のオプションは更新データを更新するときにリレーションシップを削除または、し、既定でオフになっています。The second option is Update or delete relationships when refreshing data, and it is off by default. 選択されている場合 (チェック オプションの横にあるボックスで有効)、データセットが更新されたときに Power BI をデータ ソース間の関係の変更について確認します。If selected (enabled by checking the box beside the option), Power BI checks for changes in data source relationships when your dataset is refreshed. これらのリレーションシップは、変更や削除は、Power BI は、更新または削除に合うように、独自のデータ モデルでこれらの変更を反映します。If those relationships changed or are removed, Power BI mirrors those changes in its own data model, updating or deleting them to match.


定義済みのリレーションシップに依存している行レベル セキュリティを使用している場合はお勧めしません 2 つ目のオプションを選択する更新データを更新するときにリレーションシップを削除またはします。If you are using row-level security that relies on the defined relationships, we do not recommend selecting the second option, Update or delete relationships when refreshing data. RLS の設定が依存関係が削除されると、モデルが安全性の低いなる可能性があります。If a relationship is removed that your RLS settings rely on, your model may become less secure.

3 番目のオプションはデータが読み込まれた後に新しいリレーションシップを自動検出に記載されている、ロード中の自動検出 セクションで、この記事の前半で見つかりました。The third option is Autodetect new relationships after data is loaded, which is described in the Autodetect during load section, found earlier in this article.

データの今後の更新には、異なるカーディナリティが必要になります。Future updates to the data require a different cardinality

通常、Power BI Desktop は、リレーションシップに最適なカーディナリティを自動的に判断できます。Normally, Power BI Desktop can automatically determine the best cardinality for the relationship. 今後データが変更されることが分かっているため、自動設定をオーバーライドする必要がある場合は、カーディナリティ コントロールで選択することができます。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. 異なるカーディナリティを選択する必要がある場合の例を見てみましょう。Let’s look at an example where we need to select a different cardinality.

次の [CompanyProjectPriority] テーブルは、会社のプロジェクトとその優先順位の一覧です。The CompanyProjectPriority table below is a list of all company projects and their priority. ProjectBudget テーブルは、予算が承認されたプロジェクトの一式です。The ProjectBudget table is the set of projects for which budget has been approved.


Approved ProjectsApproved Projects BudgetAllocationBudgetAllocation AllocationDateAllocationDate
Blue 40,00040,000 2012 年 12 月 1 日12/1/2012
Red 100,000100,000 2012 年 12 月 1 日12/1/2012
Green 50,00050,000 2012 年 12 月 1 日12/1/2012


ProjectProject PriorityPriority
Blue AA
Red BB
Green CC
Yellow CC
Purple BB
オレンジ色Orange CC

[CompanyProjectPriority] テーブルの [プロジェクト] 列と [ProjectBudget] テーブルの [承認済みプロジェクト] 列の間にリレーションシップを作成すると、次のようになります。If we create a relationship between the Project column in the CompanyProjectPriority table and ApprovedProjects column in the ProjectBudget table, like this:

カーディナリティは自動的に一対一 (1:1) に設定され、クロス フィルターは "双方向" に設定されます (次に示すとおり)。Cardinality is automatically set to One-to-One (1:1), and cross filtering to be Both (as shown). これは、Power BI Desktop にとって、2 つのテーブルの最良の組み合わせが次のようになるためです。This is because to Power BI Desktop, the best combination of the two tables really looks like this:

ProjectProject PriorityPriority BudgetAllocationBudgetAllocation AllocationDateAllocationDate
Blue AA 40,00040,000 2012 年 12 月 1 日12/1/2012
Red BB 100,000100,000 2012 年 12 月 1 日12/1/2012
Green CC 50,00050,000 2012 年 12 月 1 日12/1/2012
Yellow CC

Purple BB

オレンジ色Orange CC

2 つのテーブル間には一対一のリレーションシップがあります。これは、結合したテーブルの [プロジェクト] 列に値の繰り返しがないためです。There is a one-to-one relationship between our two tables because there are no repeating values in the combined table’s Project column. [プロジェクト] 列は一意です。これは、各値が 1 回のみ発生するためです。このため、2 つのテーブルの行を重複なしで直接結合することができます。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.

しかし、次回データを更新すると、データが変更されることが分かっているとしましょう。But, let’s say you know the data will change the next time you refresh it. 更新後の ProjectBudget テーブルには、青と赤の行が追加されています。A refreshed version of the ProjectBudget table now has additional rows for Blue and Red:


Approved ProjectsApproved Projects BudgetAllocationBudgetAllocation AllocationDateAllocationDate
Blue 40,00040,000 2012 年 12 月 1 日12/1/2012
Red 100,000100,000 2012 年 12 月 1 日12/1/2012
Green 50,00050,000 2012 年 12 月 1 日12/1/2012
Blue 80,00080,000 2013 年 6 月 1 日6/1/2013
Red 90,00090,000 2013 年 6 月 1 日6/1/2013

これは、2 つのテーブルの最良の組み合わせが次のようになることを意味します。This means the best combination of the two tables now really looks like this:

ProjectProject PriorityPriority BudgetAllocationBudgetAllocation AllocationDateAllocationDate
Blue AA 40,00040,000 2012 年 12 月 1 日12/1/2012
Red BB 100,000100,000 2012 年 12 月 1 日12/1/2012
Green CC 50,00050,000 2012 年 12 月 1 日12/1/2012
Yellow CC

Purple BB

オレンジ色Orange CC

Blue AA 8000080000 2013 年 6 月 1 日6/1/2013
Red BB 9000090000 2013 年 6 月 1 日6/1/2013

この結合された新しいテーブルでは、[プロジェクト] 列に値の繰り返しがあります。In this new combined table, the Project column has repeating values. テーブルが更新されると、元の 2 つのテーブルに一対一のリレーションシップはなくなります。The two original tables won’t have a one-to-one relationship once the table is refreshed. この場合、今後の更新によって [プロジェクト] 列に重複が生じることがわかっているため、カーディナリティを多対一 (*:1) に設定する必要があります。ここで、"多" は ProjectBudget 側で、"一" は CompanyProjectPriority 側です。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 CompanyProjectPriority side.

複雑なテーブルとリレーションシップのセットでクロス フィルターの方向を調整するAdjusting cross filter direction for a complex set of tables and relationships

ほとんどのリレーションシップでは、クロス フィルターの方向は '双方向' に設定されています。For most relationships, the cross filter direction is set to ‘Both’. ただし、一般的な状況ではないものの、この設定を既定とは異なる設定にする必要が生じる可能性がある場合 (古いバージョンの Power Pivot からモデルをインポートする場合など) や、各リレーションシップを一方向に設定する場合も考えられます。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.

"双方向" に設定すると、Power BI Desktop は、接続されたテーブルのすべての側面を、1 つのテーブルであるかのように扱えるようになります。The Both setting enables Power BI Desktop to treat all aspects of connected tables as if they are a single table. ただし、状況によっては、Power BI Desktop がリレーションシップのクロス フィルターの方向を '双方向' に設定できない場合や、レポートの目的で明確な既定値の一式を使用可能なままにする場合もあります。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. リレーションシップのクロス フィルターの方向が "双方向" に設定されていない場合、通常はあいまいさが生じていることが原因です。If a relationship cross filter direction isn't set to Both, then it’s usually because it would create ambiguity. 既定のクロス フィルターの設定が機能していない場合は、特定のテーブルに対して設定するか、"双方向" に設定してみてください。If the default cross filter setting isn’t working for you, try setting it to a particular table or Both.

一方向のクロス フィルターは、多くの状況で機能します。Single direction cross filtering works for many situations. 実際に、Excel 2013 以前の Power Pivot からモデルをインポートした場合、すべてのリレーションシップは一方向に設定されます。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. 一方向とは、接続されたテーブルでのフィルター処理の選択内容が、集約作業が発生しているテーブルで機能することを意味します。Single direction means that filtering choices in connected tables work on the table where aggregation work is happening. クロス フィルター処理を理解することは少し難しいことがあるので、例を見てみましょう。Sometimes, understanding cross filtering can be a little difficult, so let’s look at an example.

一方向のクロス フィルターを使用すると、プロジェクトの時間をまとめたレポートを作成する場合、[CompanyProject]、[優先順位] または [CompanyEmployee]、[市区町村] でまとめる (またはフィルター処理する) ことができます。With single direction cross filtering, if you create a report that summarizes the project hours, you can then choose to summarize (or filter) by CompanyProject, Priority or CompanyEmployee, City. ただし、プロジェクトごとの従業員数をカウントする場合 (あまり一般的なテーマではありません) は機能しません。If however, you want to count the number of employees per projects (a less common question), it won’t work. すべてが同じ値の列が得られます。You’ll get a column of values that are all the same. 次の例で、両方のリレーションシップのクロス フィルターの方向は、[ProjectHours] テーブルへの一方向に設定されています。In the example below, both relationships cross filtering direction is set to a single direction – towards the ProjectHours table:

(次の図に示すように) フィルター処理の指定では、[CompanyProject] から [CompanyEmployee] へ流れます。しかし、[CompanyEmployee] に向かっては流れません。Filter specification will flow from CompanyProject to CompanyEmployee (as shown in the image below) but, it won’t flow up to CompanyEmployee. ただし、クロス フィルターを双方向に設定すると、流れるようになります。However, if you set the cross filtering direction to Both it will work. 双方向に設定すると、フィルター処理の指定で [従業員] に向かって流れるように指定できます。The Both setting allows the filter specification to flow up to Employee.

クロス フィルターの方向を双方向にすると、レポートが正しく表示されるようになります。With the cross filtering direction set to Both, our report now appears correct:

上記のパターンのようなテーブルのリレーションシップのパターンでは、双方向のクロス フィルターは適切に機能します。Cross filtering both directions works well for a pattern of table relationships that look like the pattern above. この最も一般的な呼び方がスター スキーマで、次のようになります。This is most commonly called a star schema, like this:

クロス フィルターの方向は、この図のように、データベースによく見られるより一般的なパターンでは適切に機能しません。Cross filtering direction does not work well with a more general pattern often found in databases, like in this diagram:

このようなループがあるテーブルのパターンの場合、クロス フィルターによりあいまいなリレーションシップのセットが作成されます。If you have a table pattern like this, with loops, then cross filtering can create an ambiguous set of relationships. たとえば、TableX のフィールドを合計してから、TableY のフィールドでフィルター処理する場合、フィルター処理が上のテーブルを通るのか、下のテーブルを通るのか、どのように進むかが明確ではありません。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. この種のパターンの一般的な例は、TableX を実際のデータを含む Sales テーブルとして使用し、TableY を予算のデータに使用するというものです。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. 次に、中央のテーブルは、部門や地域など、両方のテーブルが使用するルックアップ テーブルです。Then, the tables in the middle are lookup tables that both tables use, such as Division or Region.

アクティブまたは非アクティブなリレーションシップのように、レポートであいまいさが生じる場合、Power BI Desktop はリレーションシップを双方向に設定することを許可しません。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. これに対処できる方法はいくつかあります。最も一般的な 2 つの方法は次のとおりです。There are several different ways you can deal with this and here are the two most common:

  • あいまいさを減らすため、リレーションシップを削除するか、非アクティブとしてマークする。Delete or mark relationships as inactive to reduce ambiguity. その後、リレーションシップのクロス フィルターを双方向に設定できる場合があります。Then you might be able to set a relationship cross filtering as Both.
  • ループをなくすために、テーブルを 2 回指定する (2 回目は異なる名前で)。Bring in a table twice (with a different name the second time) to eliminate loops. これにより、リレーションシップのパターンがスター スキーマのようになります。This makes the pattern of relationships like a star schema. スター スキーマでは、すべてのリレーションシップを双方向に設定できます。With a star schema, all of the relationships can be set to Both.

正しくないアクティブなリレーションシップWrong active relationship

Power BI Desktop が自動的にリレーションシップを作成する際、2 つのテーブル間に複数のリレーションシップが作成される場合があります。When Power BI Desktop automatically creates relationships, it sometimes encounters more than one relationship between two tables. このような場合、1 つのリレーションシップだけがアクティブに設定されます。When this happens only one of the relationships is set to be active. アクティブなリレーションシップは、既定のリレーションシップとして機能します。それにより、2 つの異なるテーブルからフィールドを選択する際、Power BI Desktop が自動的に視覚化を作成できるようになります。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. ただし、場合によっては、自動的に選択したリレーションシップが正しくないことがあります。However, in some cases the automatically selected relationship can be wrong. [リレーションシップの管理] ダイアログ ボックスを使用すると、リレーションシップをアクティブまたは非アクティブに設定することができます。または、[リレーションシップの編集] ダイアログ ボックスでアクティブなリレーションシップを設定することができます。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.

既定のリレーションシップが確実にあるようにするため、Power BI Desktop は、特定の時点で 2 つのテーブル間にアクティブなリレーションシップを 1 つだけ許可します。To ensure there’s a default relationship, Power BI Desktop only allows a single active relationship between two tables at a given time. したがって、まず、現在のリレーションシップを非アクティブにしてから、アクティブにするリレーションシップを設定する必要があります。So, you must first set the current relationship as inactive and then set the relationship you want to be active.

例を見てみましょう。Let’s look at an example. この最初のテーブルは [ProjectTickets] で、次のテーブルは [EmployeeRole] です。This first table is ProjectTickets, and the next table is EmployeeRole.


TicketTicket OpenedByOpenedBy SubmittedBySubmittedBy HoursHours ProjectProject DateSubmitDateSubmit
10011001 Perham, TomPerham, Tom Brewer, AlanBrewer, Alan 2222 Blue 2013 年 1 月 1 日1/1/2013
10021002 Roman, DanielRoman, Daniel Brewer, AlanBrewer, Alan 2626 Red 2013 年 2 月 1 日2/1/2013
10031003 Roth, DanielRoth, Daniel Ito, ShuIto, Shu 3434 Yellow 2012 年 12 月 4 日12/4/2012
10041004 Perham, TomPerham, Tom Brewer, AlanBrewer, Alan 1313 オレンジ色Orange 2012 年 1 月 2 日1/2/2012
10051005 Roman, DanielRoman, Daniel Bowen, EliBowen, Eli 2929 Purple 2013 年 10 月 1 日10/1/2013
10061006 Roth, DanielRoth, Daniel Bento, NunoBento, Nuno 3535 Green 2013 年 2 月 1 日2/1/2013
10071007 Roth, DanielRoth, Daniel Hamilton, DavidHamilton, David 1010 Yellow 2013 年 10 月 1 日10/1/2013
10081008 Perham, TomPerham, Tom Han, MuHan, Mu 2828 オレンジ色Orange 2012 年 1 月 2 日1/2/2012
10091009 Roman, DanielRoman, Daniel Ito, ShuIto, Shu 2222 Purple 2013 年 2 月 1 日2/1/2013
10101010 Roth, DanielRoth, Daniel Bowen, EliBowen, Eli 2828 Green 2013 年 10 月 1 日10/1/2013
10111011 Perham, TomPerham, Tom Bowen, EliBowen, Eli 99 Blue 2013 年 10 月 15 日10/15/2013


EmployeeEmployee ロールRole
Bento, NunoBento, Nuno プロジェクト マネージャーProject Manager
Bowen, EliBowen, Eli プロジェクト リーダーProject Lead
Brewer, AlanBrewer, Alan プロジェクト マネージャーProject Manager
Hamilton, DavidHamilton, David プロジェクト リーダーProject Lead
Han, MuHan, Mu プロジェクト リーダーProject Lead
Ito, ShuIto, Shu プロジェクト リーダーProject Lead
Perham, TomPerham, Tom プロジェクト スポンサーProject Sponsor
Roman, DanielRoman, Daniel プロジェクト スポンサーProject Sponsor
Roth, DanielRoth, Daniel プロジェクト スポンサーProject Sponsor

ここには 2 つのリレーションシップが存在しています。There are actually two relationships here. 1 つは [ProjectTickets] テーブルの [SubmittedBy] と [EmployeeRole] テーブルの [Employee] の間のリレーションシップ、もう 1 つは [ProjectTickets] テーブルの [OpenedBy] と [EmployeeRole] テーブルの [Employee] の間のリレーションシップです。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.

モデルに両方のリレーションシップを追加する場合 (OpenedBy が先) 、[リレーションシップの管理] ダイアログ ボックスに、OpenedBy がアクティブであることが表示されます。If we add both relationships to the model (OpenedBy first), then the Manage Relationships dialog will show that OpenedBy is active:

ここで、[employeerole] の役割と従業員のフィールドと [projecttickets] テーブルの視覚化の時間フィールドをレポート キャンバスで使用するレポートを作成する場合だけプロジェクト スポンサー、プロジェクト チケットを開くことだけになるためが表示されます。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 will see only project sponsors because they’re the only ones that opened a project ticket.

アクティブなリレーションシップを変更して、OpenedBy ではなく SubmittedBy を取得することができます。We can change the active relationship and get SubmittedBy instead of OpenedBy. [リレーションシップの管理] で、ProjectTickets(OpenedBy) から EmployeeRole(Employee) へのリレーションシップをオフにします。続いて、Project Tickets(SubmittedBy) から 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.

リレーションシップ ビューで、すべてのリレーションシップを参照してください。See all of your relationships in Relationship View

場合によっては、モデルに複数のテーブルがあり、それらのテーブル間に複雑なリレーションシップが含まれることがあります。Sometimes your model has multiple tables and complex relationships between them. Power BI Desktop のリレーションシップ ビューでは、モデル内のすべてのリレーションシップ、その方向、カーディナリティが、分かりやすくカスタマイズ可能なダイアグラムに表示されます。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. 詳細については、「Power BI Desktop のリレーションシップ ビュー」をご覧ください。To learn more, see Relationship View in Power BI Desktop.