Power BI Desktop で [参照整合性を想定] 設定を適用するApply the Assume Referential Integrity setting in Power BI Desktop

DirectQuery を利用し、データ ソースに接続するとき、 [参照整合性を想定] 選択を使用し、より効率的なクエリをデータ ソースに対して実行します。When connecting to a data source using DirectQuery, you can use the Assume Referential Integrity selection to enable running more efficient queries against your data source. この機能には基礎となるデータに関していくつかの要件があり、DirectQuery の利用時にのみ利用できます。This feature has a few requirements of the underlying data, and it is only available when using DirectQuery.

[参照整合性を想定] を設定すると、データ ソースに対するクエリで OUTER JOIN ステートメントではなく INNER JOIN ステートメントを使用できるようになり、クエリの効率性が上がります。Setting Assume referential integrity enables queries on the data source to use INNER JOIN statements rather than OUTER JOIN, which improves query efficiency.

[参照整合性を想定] を選択するための [リレーションシップの編集] ダイアログのスクリーンショット。

[参照整合性を想定] を使用するための要件Requirements for using Assume referential integrity

これは高度な設定であり、DirectQuery を利用してデータに接続するときにのみ有効になります。This is an advanced setting, and is only enabled when connecting to data using DirectQuery. [参照整合性を想定] を正しく動作させるには、次の要件を満たす必要があります。The following requirements are necessary for Assume referential integrity to work properly:

  • リレーションシップの [From] (参照元) 列のデータを Null または にしないData in the From column in the relationship is never Null or blank
  • [From] (参照元) 列のデータにはそれぞれ [To] (参照先) 列に対応する値があります。For each value in the From column, there is a corresponding value in the To column

このコンテキストでは、 [From] (参照元) 列は [一対多] 関係の [多] になります。あるいは、 [一対多] 関係の最初の表の列になります。In this context, the From column is the Many in a One-to-Many relationship, or it is the column in the first table in a One-to-One relationship.

[参照整合性を想定] の使用例Example of using Assume referential integrity

次の例は、データ接続で [参照整合性を想定] を使用した場合の動作を示しています。The following example demonstrates how Assume referential integrity behaves when used in data connections. この例では、OrdersProductsDepots テーブルを含むデータ ソースに接続しています。The example connects to a data source that includes an Orders table, a Products table, and a Depots table.

  1. 次の画像では、Orders テーブルと Products テーブルを確認できます。Orders[ProductID]Products[ProductID] の間に参照整合性が存在することを確認してください。In the following image that shows the Orders table and the Products table, note that referential integrity exists between Orders[ProductID] and Products[ProductID]. Orders テーブルの [ProductID] 列が Null になることはありません。すべての値は Products テーブルにも表示されます。The [ProductID] column in the Orders table is never Null, and every value also appears in the Products table. そのため、 [参照整合性を想定] は、より効率的なクエリを得るために設定してください (この設定を使用してビジュアルに表示される値が変わることはありません)。As such, Assume Referential Integrity should be set to get more efficient queries (using this setting does not change the values shown in visuals).

    Orders テーブルと Products テーブルのスクリーンショット。

  2. 次の画像では、Orders[DepotID]Depots[DepotID] の間に参照整合性がないことに注意してください。一部の Orders に関して、DepotIDNull になっているためです。In the next image, notice that no referential integrity exists between Orders[DepotID] and Depots[DepotID], because the DepotID is Null for some Orders. そのため、 [参照整合性を想定]設定しない でください。As such, Assume Referential Integrity should not be set.

    Orders テーブルと Depots テーブルのスクリーンショット。

  3. 最後になりますが、次のテーブルの Orders[CustomerID]Customers[CustID] の間には参照整合性がありません。CustomerID には、Customers テーブルにはない値がいくつか含まれています (この例では CustX)。Finally, no referential integrity exists between Orders[CustomerID] and Customers[CustID] in the following tables; the CustomerID contains some values (in this case, CustX) that do not exist in the Customers table. そのため、 [参照整合性を想定]設定しない でください。As such, Assume Referential Integrity should not be set.

    Orders テーブルと Customers テーブルのスクリーンショット。

[参照整合性を想定] を設定するSetting Assume referential integrity

この機能を有効にするには、次の画像のように [参照整合性を想定] の隣にあるチェックボックスを選択します。To enable this feature, select the checkbox next to Assume Referential Integrity as shown in the following image.

[参照整合性を想定] を選択できる [リレーションシップの編集] ダイアログのスクリーンショット。

選択すると、Null や一致しない行がないことが確認する目的でデータに対して設定が検証されます。When selected, the setting is validated against the data to ensure there are no Null or mismatched rows. ただし 、値の数が非常に多い場合、検証しても、参照整合性問題がないことは保証されません。However, for cases with a very large number of values, the validation is not a guarantee that there are no referential integrity issues.

また、検証は関係を追加したときに行われ、追加後のデータ変更は 反映されませんIn addition, the validation occurs at the time of editing the relationship, and does not reflect any subsequent changes to the data.

[参照整合性を想定] を間違えて設定した場合What happens if you incorrectly set Assume referential integrity?

データに参照整合性の問題があるときに [参照整合性を想定] を設定すると、エラーは起こりません。If you set Assume Referential Integrity when there are referential integrity issues in the data, this will not result in errors. ただし、明らかなデータの不整合が確認できます。However, it will result in apparent inconsistencies in the data. たとえば、上記の Depots テーブルの関係の場合、次のような現象が起こります。For example, in the case of the relationship to the Depots table described above, it would result in the following:

  • 合計 Order Qty を示すビジュアルが値として 40 を示す。A visual showing the total Order Qty would show a value of 40
  • 合計 Order Qty by Depot City を示すビジュアルの合計値がたった 30 を示す。DepotIDNull の Order ID 1 が含まれていないためです。A visual showing the total Order Qty by Depot City would show a total value of only 30, because it would not include Order ID 1, where DepotID is Null.

次の手順Next steps

DirectQuery の詳細Learn more about DirectQuery

Power BI リレーションシップの詳細Get more information about Relationships in Power BI

Power BI Desktop のリレーションシップ ビューの詳細Learn more about Relationship View in Power BI Desktop.