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

データが読み込まれるときに、同時に複数のテーブルのクエリを実行する場合、Power BI Desktop はリレーションシップの検索および作成を試みます。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. カーディナリティ、クロス フィルターの方向、およびアクティブ プロパティが自動的に設定されます。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 will 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 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.

既定では、Power BI Desktop は新しいリレーションシップのカーディナリティ (の方向)、クロス フィルターの方向、およびアクティブ プロパティを自動的に構成します。ただし、必要な場合は、[詳細設定オプション] で変更することができます。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. 詳細については、この記事で後述する「詳細設定オプションについて」のセクションを参照してください。To learn more, see the Understanding advanced options section later in this article.

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

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

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

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

カーディナリティCardinality

多対一 (*:1) - 最も一般的な、既定の型です。Many to One (*:1) - This is the most common, default type. つまり、1 つのテーブル内の列は値のインスタンスを複数持つことができ、関連するもう 1 つのテーブル (多くの場合ルックアップ テーブルとして知られる) は値のインスタンスを 1 つだけ持つことができます。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.

一対一 (1:1) - 1 つのテーブル内の列は特定の値のインスタンスを 1 つだけ持ち、関連するもう 1 つのテーブルも特定の値のインスタンスを 1 つだけ持つことを意味します。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.

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

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

双方向 – 最も一般的な、既定の方向です。Both - This is the most common, default direction. つまり、フィルター処理の目的で、両方のテーブルが 1 つのテーブルであるかのように扱われます。This means for filtering purposes, both tables are treated as if they're a single table. これは、周囲に複数のルックアップ テーブルが存在する 1 つのテーブルの場合に、上手く機能します。This 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.

一方向 – 接続されたテーブルでのフィルター処理の選択内容が、値が集約されているテーブルに対して機能することを意味します。Single - This means that 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 advanced 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 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.

特定のリレーションシップをアクティブにするタイミングの詳細については、この記事で後述する「詳細設定オプションについて」を参照してください。See the Understanding advanced 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. ただし、2 つのテーブル間にリレーションシップが存在することがかなり確実であるという場合以外は、Power BI Desktop はリレーションシップを自動的に作成しません。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 . その場合は、ユーザーがリレーションシップを作成する必要があります。In that case, you will need to create the relationship.

Power BI Desktop でのリレーションシップのしくみを分かりやすくするために、少しチュートリアルをしましょう。Let’s do a little 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.

ProjectHoursProjectHours

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.

CompanyProjectCompanyProject

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

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

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 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.

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

  1. [リレーションシップの管理]をクリックします。Click Manage Relationships.
  2. [リレーションシップの管理] で、[新規] をクリックします。In Manage Relationships, click New. [リレーションシップの作成] ダイアログが開きます。ここで、テーブル、列、リレーションシップのすべての詳細設定を選べます。This opens the Create Relationship dialog, where we can select the tables, columns, and any advanced 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 really just created this relationship the hard way. [リレーションシップの管理] ダイアログ ボックスの [自動検出] ボタンをクリックする方法も考えられました。You could've 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 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.

これは非常に簡単でした。実際、自動検出を使用すれば、これらの操作さえ不要な可能性があります。That was pretty easy, in-fact, with Autodetect, you might not even have to do this much.

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

自動検出または手動でリレーションシップを作成する際、Power BI Desktop は、テーブル内のデータに基づいて詳細設定オプションを自動的に構成します。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. リレーションシップの詳細なプロパティを構成するには、[リレーションシップの作成/編集] ダイアログ ボックスの [詳細設定オプション] を展開します。You can configure advanced relationship properties by expanding Advanced options in 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 advanced options yourself.

データの今後の更新には、異なるカーディナリティが必要になります。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.

ProjectBudgetProjectBudget

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

CompanyProjectPriorityCompanyProjectPriority

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:

ProjectBudgetProjectBudget

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 側で、"一" は 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.

リレーションシップがある複雑なテーブルのセットでクロス フィルターの方向を調整するAdjusting cross filter direction for a complex set of tables of 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 and then you can choose to summarize (or filter) by CompanyProject, Priority or CompanyEmployee, City. ただし、プロジェクトごとの従業員数をカウントする場合 (あまり一般的なテーマではありません) は機能しません。If however, you want to count the number of employee 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 for this kind of pattern is TableX to be 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, 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.

ProjectTicketsProjectTickets

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

EmployeeRoleEmployeeRole

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’ll 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.