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

複数のテーブルをインポートするとき、それらのすべてのテーブルからデータを使用して分析を実行する可能性が高くなります。When you import multiple tables, chances are you'll do some analysis using data from all those tables. 結果を正確に計算し、レポートに正しい情報を表示するためには、これらのテーブル間のリレーションシップが必要です。Relationships between those tables are necessary 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 does it for you. ただし、場合によっては、自分でリレーションシップを作成したり、リレーションシップを変更したりすることが必要な場合があります。However, sometimes you might have to create relationships yourself, or need to make 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 attempts to find and create relationships for you. リレーションシップのオプション [カーディナリティ][クロス フィルターの方向][このリレーションシップをアクティブにする] は、自動的に設定されます。The relationship options Cardinality, Cross filter direction, and Make this relationship active are automatically set. Power BI Desktop では、クエリを実行しているテーブルの列名が調べられて、潜在的なリレーションシップがあるかどうかが判断されます。Power BI Desktop looks at column names in the tables you're querying to determine if there are any potential relationships. そのようなリレーションシップがある場合は、自動的に作成されます。If there are, those relationships are created automatically. Power BI Desktop によって高いレベルの信頼度で一致するものがあると判断できない場合、リレーションシップは作成されません。If Power BI Desktop can't determine with a high level of confidence there's a match, it doesn't create the relationship. ただし、その場合でも、 [リレーションシップの管理] ダイアログ ボックスを使用して、手動でリレーションシップを作成または編集できます。However, you can still use the Manage relationships dialog box to manually create or edit relationships.

自動検出を使用してリレーションシップを作成するCreate a relationship with autodetect

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

自動検出を使用してリレーションシップを作成する

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

  1. [ホーム] タブで、 [リレーションシップの管理] > [新規] の順に選択します。On the Home tab, select Manage Relationships > New.

  2. [リレーションシップの作成] ダイアログ ボックスで、最初のテーブルのドロップダウン リストからテーブルを選択します。In the Create relationship dialog box, in the first table drop-down list, select a table. リレーションシップで使用する列を選択します。Select the column you want to use in the relationship.

  3. 2 番目のテーブルのドロップダウン リストで、リレーションシップに必要なもう一方のテーブルを選択します。In the second table drop-down list, select the other table you want in the relationship. 使用する他の列を選択し、 [OK] を選択します。Select the other column you want to use, and then elect OK.

    手動でリレーションシップを作成する

既定では、新しいリレーションシップの [カーディナリティ] (方向)、 [クロス フィルターの方向][このリレーションシップをアクティブにする] の各オプションは、Power BI Desktop によって自動的に構成されます。By default, Power BI Desktop automatically configures the options Cardinality (direction), Cross filter direction, and Make this relationship active for your new relationship. ただし、これらの設定は必要に応じて変更できます。However, you can change these settings if necessary. 詳しくは、「詳細設定オプションについて」をご覧ください。For more information, see Understanding additional options.

リレーションシップに対して選択したどのテーブルにも一意の値がない場合は、次のエラーが表示されます: "いずれかの列に、一意の値が必要です"。If none of the tables selected for the relationship has unique values, you'll see the following error: One of the columns must have unique values. リレーションシップの少なくとも 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 Duplicates to create a column with unique values. この方法の短所は、重複行が削除されると、情報が失われる可能性があることです。多くの場合、キー (行) は正当な理由があって複製されます。The drawback to this approach is that you might lose information when duplicate rows are removed; often a key (row) is duplicated for good reason.
  • 個別キー値の一覧で構成される中間テーブルをモデルに追加します。このモデルがリレーションシップの両方の元の列にリンクされます。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 information, see this blog post.

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

  1. [ホーム] タブで、 [リレーションシップの管理] を選択します。On the Home tab, select Manage Relationships.

  2. [リレーションシップの管理] ダイアログ ボックスでリレーションシップを選択し、 [編集] を選択します。In the Manage relationships dialog box, select the relationship, then select Edit.

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

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

カーディナリティCardinality

[カーディナリティ] オプションには、次のいずれかの設定を指定できます。The Cardinality option can have one of the following settings:

多対一 (*:1) : 多対一のリレーションシップは最も一般的なものであり、既定の種類のリレーションシップです。Many to one (*:1): A many-to-one relationship is the most common, default type of realtionship. つまり、一方のテーブル内の列には、1 つの値の複数のインスタンスが存在していてもよく、関連するもう一方のテーブル (多くの場合ルックアップ テーブルとして知られる) では 1 つの値のインスタンスは 1 つだけです。It means the column in a given 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 つだけです。One to one (1:1): In a one-to-one relationship, the column in one table has only one instance of a particular value, and the other related table has only one instance of a particular value.

一対多 (1:*) : 一対多のリレーションシップでは、一方のテーブル内の列には特定の値のインスタンスが 1 つだけあり、関連するもう一方のテーブルには、ある値のインスタンスが複数存在していてもかまいません。One to many (1:*): In a one-to-many relationship, the column in one table has only one instance of a particular value, and the other related table can have more than one instance of a value.

多対多 (*:*) : 複合モデルでは、テーブル間に多対多のリレーションシップを確立できます。これにより、テーブル内の値が一意である必要がなくなります。Many to many (*:*): With composite models, you can establish a many-to-many relationship 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 information, see Relationships with a many-many cardinality.

どのようなときにカーディナリティを変更するのかについて詳しくは、「詳細設定オプションについて」をご覧ください。For more information about when to change cardinality, see Understanding additional options.

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

[クロス フィルターの方向] オプションには、次のいずれかの設定を指定できます。The Cross filter direction option can have one the following settings:

双方向: フィルター処理の場合は、両方のテーブルが 1 つのテーブルであるかのように扱われます。Both: For filtering purposes, both tables are treated as if they're a single table. [双方向] の設定は、周囲に複数のルックアップ テーブルが存在する 1 つのテーブルの場合に、上手く機能します。The Both setting 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 its department. この構成は、多くの場合、スター スキーマ構成 (複数のルックアップ テーブルと 1 つの中心テーブル) と呼ばれます。This configuration is often called a star schema configuration (a central table with several lookup tables). ただし、複数のルックアップ テーブル (一部は共通) を含むテーブルが 2 つ以上ある場合は、双方向の設定を使用しません。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: The most common, default direction, which means 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.

どのようなときにクロス フィルターの方向を変更するのかについて詳しくは、「詳細設定オプションについて」をご覧ください。For more information about when to change cross filter direction, see Understanding additional options.

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

オンにすると、リレーションシップはアクティブな既定のリレーションシップとして機能します。When checked, 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.

どのようなときに特定のリレーションシップをアクティブにするかについて詳しくは、「詳細設定オプションについて」をご覧ください。For more information about when to make a particular relationship active, see Understanding additional options.

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

2 つのテーブルをリレーションシップでつなぐと、両方のテーブルにあるデータを 1 つのテーブルであるかのように操作できます。これにより、リレーションシップの詳細について考慮したり、インポートする前にこれらのテーブルを 1 つのテーブルにフラット化したりする必要がなくなります。Once you've connected two tables together with a relationship, you can work with the data in both tables as if they were a single table, freeing you from having to worry about relationship details, or flattening those tables into a single table before importing them. 多くの場合、Power BI Desktop ではリレーションシップを自動的に作成できます。In many situations, Power BI Desktop can automatically create relationships for you. ただし、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 doesn't automatically create the relationship. その場合は、手動で行う必要があります。In that case, you must do so.

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:

  1. 次の ProjectHours テーブルを Excel のワークシートにコピーし (タイトルを除く)、すべてのセルを選択して、 [挿入] > [テーブル] を選択します。Copy the following ProjectHours table into an Excel worksheet (excluding the title), select all of the cells, and then select Insert > Table.
  2. [テーブルの作成] ダイアログ ボックスで、 [OK] を選択します。In the Create Table dialog box, select OK.
  3. テーブルの任意のセルを選択し、 [テーブル デザイン] > [テーブル名] を選択して、「ProjectHours」と入力します。Select any table cell, select Table Design > Table Name, and then enter ProjectHours.
  4. CompanyProject テーブルについても同じ操作を行います。Do the same for the CompanyProject table.
  5. Power BI Desktop の [データを取得] を使用して、データをインポートします。Import the data by using Get Data in Power BI Desktop. データソースとして 2 つのテーブルを選択し、 [読み込み] を選択します。Select the two tables as a data source, and then select Load.

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

ProjectHoursProjectHours

TicketTicket SubmittedBySubmittedBy HoursHours ProjectProject DateSubmitDateSubmit
10011001 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/110/1/2013
10061006 Bento, NunoBento, Nuno 3535 グリーンGreen 2013 年 2 月 1 日2/1/2013
10071007 Hamilton, DavidHamilton, David 1010 イエローYellow 2013/10/110/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 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. 最初に取得するものは、プロジェクトの優先度ごとに送信された時間数です。そのため、 [フィールド] ペインから PriorityHours を選択します。The first thing we want to get is the number of hours submitted by project priority, so we select Priority and Hours from the Fields pane.

[フィールド] ペインから Priority と Hours を選択する

レポート キャンバスでテーブルを見ると、各プロジェクトの時間数が 256 で、これが合計でもあることがわかります。If we look at our table in the report canvas, you’ll see the number of hours is 256 for each project, which is also the total. この値は明らかに正しくありません。Clearly this number isn’t correct. なぜでしょうか。Why? 理由は、2 つのテーブル間にリレーションシップがない状態では、1 つのテーブルの値 (ProjectHours テーブルの Hours) の合計を、別のテーブルの値 (CompanyProject テーブルの Priority) でスライスして計算することはできないためです。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'll use these two columns to create a relationship between our tables.

なぜこれらの列なのでしょうか。Why these columns? ProjectHours テーブルの Project 列を見ると、ブルー、レッド、イエロー、オレンジなどの値があります。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. 実際、Project には多数の色の値があります。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 the project name. このテーブルの各色の値は一意です。このことは、これら 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. 一部のリレーションシップには他にもいくつかオプションがあります。これについては後で説明します。There are some additional options for some relationships, which we'll look at later. ここでは、2 つの各テーブルのプロジェクト列の間にリレーションシップを作成します。For now, let’s create a relationship between the project columns in each of our two tables.

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

  1. [ホーム] タブから、 [リレーションシップの管理] を選択します。Select Manage Relationships from the Home tab.

  2. [リレーションシップの管理] で、 [新規] を選択して [リレーションシップの作成] ダイアログ ボックスを開きます。ここでは、リレーションシップに必要なテーブル、列、および追加の設定を選択できます。In Manage relationships, select New to open the Create relationship dialog box, where we can select the tables, columns, and any additional settings we want for our relationship.

  3. 最初のドロップダウン リストで、最初のテーブルとして ProjectHours を選択してから、Project 列を選択します。In the first drop-down list, select ProjectHours as the first table, then select the Project column. この側は、リレーションシップの "" の側になります。This side is the many side of our relationship.

  4. 2 番目のドロップダウン リストでは、2 番目のテーブルとして CompanyProject が既に選択されています。In the second drop-down list, CompanyProject is preselected as the second table. ProjName 列を選択します。Select the ProjName column. この側は、リレーションシップの "" の側になります。This side is the one side of our relationship.

  5. リレーションシップのオプションは既定値のままにして、 [OK] を選択します。Accept the defaults for the relationship options, and then select OK.

    [リレーションシップの作成] ダイアログ ボックス

  6. [リレーションシップの管理] ダイアログ ボックスで、 [閉じる] を選択します。In the Manage relationships dialog box, select Close.

すべてを示すために、ここではリレーションシップを厳密な方法で作成しました。In the interest of full disclosure, you just created this relationship the hard way. [リレーションシップの管理] ダイアログ ボックスの [自動検出] を選択するだけでもかまいませんでした。You could have just selected Autodetect in the Manage relationships dialog box. 実際、両方の列の名前が同じ場合は、データを読み込むと、自動検出によってリレーションシップが自動的に作成されます。In fact, autodetect would have automatically created the relationship 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.

Priority と Hours を使用して作成されたリレーションシップ

全体的な見た目が良くなっています。That looks a whole lot better, doesn’t it?

Priority ごとに時間数を集計すると、Power BI Desktop によって、CompanyProject ルックアップ テーブルで一意の色の値のすべてのインスタンスが検索され、ProjectHours テーブルでそれらの各値に対するすべてのインスタンスが検索された後、一意の値ごとに合計が計算されます。When we sum up hours by Priority, Power BI Desktop looks for every instance of the unique color values in the CompanyProject lookup table, looks for every instance of each of those values in the ProjectHours table, and then calculates a sum total for each unique value.

ここまでは簡単でした。That was easy. 実際、自動検出を使用すると、これらの操作さえ不要な可能性があります。In fact, with autodetect, you might not even have to do that much.

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

自動検出または手動でリレーションシップを作成する場合、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. リレーションシップのこれらの詳細オプションは、 [リレーションシップの作成] および [リレーションシップの編集] ダイアログ ボックスの下部にあります。These additional relationship options are located in the lower portion of the Create relationship and Edit relationship dialog boxes.

リレーションシップのオプション

Power BI では、通常、これらのオプションは自動的に設定され、調整する必要はありません。ただし、いくつかの状況では、自分でこれらのオプションを構成することが必要になる場合があります。Power BI typically sets these options automatically and you won’t need to adjust them; however, there are several situations where you might want to configure these options yourself.

リレーションシップの自動更新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, and then select Data Load in the left pane. [リレーションシップ] のオプションが表示されます。The options for Relationships appear.

リレーションシップのオプション

選択して有効にすることができるオプションが 3 つあります。There are three options that can be selected and enabled:

  • [最初の読み込みでデータ ソースからリレーションシップをインポートします] : 既定では、このオプションはオンになっています。Import relationships from data sources on first load: This option is selected by default. オンにすると、データ ウェアハウス内の外部キーと主キーのリレーションシップなど、データ ソースで定義されているリレーションシップが Power BI によって確認されます。When it's selected, Power BI checks for relationships defined in your data source, such as foreign key/primary key relationships in your data warehouse. このようなリレーションシップが存在する場合は、データを最初に読み込むときに、これらのリレーションシップが Power BI データ モデルに反映されます。If such relationships exist, they're 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.

  • [データを更新する際にリレーションシップを更新または削除します] : 既定では、このオプションはオフになっています。Update or delete relationships when refreshing data: This option is unselected by default. オンにすると、データセットが更新されたときに、Power BI によってデータ ソースのリレーションシップの変更が確認されます。If you select it, 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.

    警告

    定義されたリレーションシップに依存する行レベルのセキュリティを使用している場合は、このオプションをオンにしないことをお勧めします。If you're using row-level security that relies on the defined relationships, we don't recommend selecting this option. RLS の設定が依存しているリレーションシップを削除すると、モデルのセキュリティが低下する可能性があります。If you remove a relationship that your RLS settings rely on, your model might become less secure.

  • [データが読み込まれた後に新しいリレーションシップを自動検出する] : このオプションについては、「読み込み中の自動検出」で説明しています。Autodetect new relationships after data is loaded: This option is described in Autodetect during load.

データの今後の更新には、異なるカーディナリティが必要になります。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 change it with the Cardinality control. 異なるカーディナリティを選択する必要がある場合の例を見てみましょう。Let’s look at an example where we need to select a different cardinality.

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

CompanyProjectPriorityCompanyProjectPriority

ProjNameProjName PriorityPriority
ブルーBlue AA
Red BB
グリーンGreen CC
Yellow CC
パープルPurple BB
オレンジOrange CC

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

ProjectBudget テーブルの Approved Projects 列と、CompanyProjectPriority テーブルの ProjectName 列の間にリレーションシップを作成すると、Power BI によって自動的に、 [カーディナリティ][一対一 (1:1)] に、 [クロス フィルターの方向][双方向] に設定されます。If we create a relationship between the Approved Projects column in the ProjectBudget table and the ProjectName column in the CompanyProjectPriority table, Power BI automatically sets Cardinality to One to one (1:1) and Cross filter direction to Both.

テーブルの列の間にリレーションシップを作成する

Power BI によってこのような設定が行われる理由は、Power BI Desktop にとって 2 つのテーブルの最適な組み合わせは次のようなものであるためです。The reason Power BI makes these settings is because, to Power BI Desktop, the best combination of the two tables is as follows:

ProjNameProjName 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

結合されたテーブルの ProjName 列には値の繰り返しがないため、2 つのテーブル間には一対一のリレーションシップがあります。There's a one-to-one relationship between our two tables because there are no repeating values in the combined table’s ProjName column. 各値が 1 回のみ発生するため、ProjName 列は一意です。したがって、2 つのテーブルの行を重複なしで直接結合することができます。The ProjName column is unique, because each value occurs only once; therefore, the rows from the two tables can be combined directly without any duplication.

しかし、次回データを更新すると、データが変更されることが分かっているとしましょう。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 the Blue and Red projects:

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 つのテーブルの最適な組み合わせが次のようになることを意味します。These additional rows mean the best combination of the two tables now looks like this:

ProjNameProjName 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

この結合された新しいテーブルでは、ProjName 列に値の繰り返しがあります。In this new combined table, the ProjName column has repeating values. テーブルが更新されると、元の 2 つのテーブルに一対一のリレーションシップはなくなります。The two original tables won’t have a one-to-one relationship once the table is refreshed. この場合、今後の更新によって ProjName 列に重複が生じることがわかっているため、 [カーディナリティ][多対一 (*:1)] に設定する必要があります。"" の側は ProjectBudget で、"" の側は CompanyProjectPriority 側です。In this case, because we know those future updates will cause the ProjName column to have duplicates, we want to set the Cardinality to be Many to one (*:1), with the many side on ProjectBudget and the one side on CompanyProjectPriority.

複雑なテーブルとリレーションシップのセットでクロス フィルターの方向を調整する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 option differently from the default, like if you’re importing a model from an older version of Power Pivot, where every relationship is set to a single direction.

[双方向] に設定すると、Power BI Desktop では、接続されたテーブルのすべての側面を、1 つのテーブルであるかのように扱えるようになります。The Both setting enables Power BI Desktop to treat all aspects of connected tables as if they're a single table. ただし、状況によっては、Power BI Desktop がリレーションシップのクロス フィルターの方向を双方向に設定できず、レポート作成のために使用できる既定値のセットを曖昧さのない状態に維持できない場合もあります。There are some situations, however, where Power BI Desktop can't set a relationship’s cross filter direction to Both and also keep an unambiguous set of defaults available for reporting purposes. リレーションシップのクロス フィルターの方向が双方向に設定されていない場合、通常は曖昧さが生じていることが原因です。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 to 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 テーブルとその Priority 列または CompanyEmployee テーブルとその City 列でまとめる (またはフィルター処理する) ことができます。With single direction cross filtering, if you create a report that summarizes the project hours, you can then choose to summarize (or filter) by the CompanyProject table and its Priority column or the CompanyEmployee table and its City column. ただし、プロジェクトごとの従業員数をカウントする場合 (あまり一般的なテーマではありません) は機能しません。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 following example, both relationship's cross filtering direction is set to a single direction: towards the ProjectHours table. [値] ウェルでは、Project フィールドが Count に設定されています。In the Values well, the Project field is set to Count:

クロス フィルターの方向

フィルターの指定では、CompanyProject から ProjectHours へは流れますが (次の図に示すように)、CompanyEmployee に向かっては流れません。Filter specification will flow from CompanyProject to ProjectHours (as shown in the following image), but it won’t flow up to CompanyEmployee.

クロス フィルターの例

ただし、クロス フィルターの方向を双方向に設定すると、流れるようになります。However, if you set the cross filtering direction to Both, it will work. [双方向] に設定すると、フィルターの指定で CompanyEmployee に向かって流れるように指定できます。The Both setting allows the filter specification to flow up to CompanyEmployee.

フィルター指定のフロー

クロス フィルターの方向を [双方向] に設定すると、レポートが正しく表示されるようになります。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 such as the pattern above. このスキーマの最も一般的な呼び方はスター スキーマで、次のようなものです。This schema 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 を実際のデータを含む売上テーブルとして使用し、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 ではリレーションシップを双方向に設定することはできません。As with active/inactive relationships, Power BI Desktop won’t allow a relationship to be set to Both if it will create ambiguity in reports. このような状況は、いくつかの方法で対処できます。There are several different ways you can handle this situation. 最も一般的なものは次の 2 つです。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. このようにすると、リレーションシップのパターンはスター スキーマのようになります。Doing so 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 situation 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. [リレーションシップの管理] ダイアログ ボックスを使用して、リレーションシップをアクティブまたは非アクティブに設定します。または、 [リレーションシップの編集] ダイアログ ボックスで、アクティブなリレーションシップを設定します。Use the Manage relationships dialog box to set a relationship as active or inactive, or set the active relationship in the Edit relationship dialog box.

既定のリレーションシップが確実にあるようにするため、Power BI Desktop では、特定の時点で 2 つのテーブル間に許可されるアクティブなリレーションシップは 1 つだけです。To ensure there’s a default relationship, Power BI Desktop allows only a single active relationship between two tables at a given time. したがって、まず、現在のリレーションシップを非アクティブにしてから、アクティブにするリレーションシップを設定する必要があります。Therefore, 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. 1 つ目のテーブルは ProjectTickets で、2 つ目のテーブルは EmployeeRole です。The first table is ProjectTickets, and the second 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/110/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/110/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:

  • EmployeeRole テーブルの Employee と、ProjectTickets テーブルの SubmittedBy の間。Between Employee in the EmployeeRole table and SubmittedBy in the ProjectTickets table.
  • ProjectTickets テーブルの OpenedBy と、EmployeeRole テーブルの Employee の間。Between OpenedBy in the ProjectTickets table and Employee in the EmployeeRole table.

2 つのリレーションシップの例

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

[リレーションシップの管理] ダイアログ ボックスでアクティブな OpenedBy

ここで、レポート キャンバスのテーブルの視覚化に含まれる EmployeeRoleRole フィールドと Employee フィールド、および ProjectTicketsHours フィールドを使用してレポートを作成すると、プロジェクト スポンサーのみが表示されます。これは、プロジェクト チケットを開いたのがプロジェクト スポンサーのみであるためです。Now, if we create a report that uses Role and Employee fields from EmployeeRole, and the Hours field from ProjectTickets in a table visualization in the report canvas, we see only project sponsors because they’re the only ones that opened a project ticket.

選択された Employee、Role、Hours フィールド

アクティブなリレーションシップを変更すると、OpenedBy ではなく SubmittedBy を取得することができます。We can change the active relationship and get SubmittedBy instead of OpenedBy. [リレーションシップの管理] で、ProjectTickets(OpenedBy) から EmployeeRole(Employee) へのリレーションシップをオフにした後、EmployeeRole(Employee) から Project Tickets(SubmittedBy) へのリレーションシップをオンにします。In Manage relationships, uncheck the ProjectTickets(OpenedBy) to EmployeeRole(Employee) relationship, and then check the EmployeeRole(Employee) to Project Tickets(SubmittedBy) relationship.

[リレーションシップの管理] ダイアログ ボックスでアクティブなリレーションシップを変更する

リレーションシップ ビューですべてのリレーションシップを表示する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 Work with Relationship view in Power BI Desktop.