Partager via


Appliquer le paramètre Intégrité référentielle supposée dans Power BI Desktop

Quand vous vous connectez à une source de données en utilisant DirectQuery, vous pouvez utiliser la sélection Intégrité référentielle supposée pour exécuter des requêtes plus efficaces sur votre source de données. Cette fonctionnalité impose quelques exigences de données sous-jacentes, et n’est disponible qu’en utilisant DirectQuery.

Le paramètre Intégrité référentielle supposée permet aux requêtes sur la source de données d’utiliser des instructions de JOINTURE INTERNE plutôt que de JOINTURE EXTERNE, ce qui améliore l’efficacité des requêtes.

Capture d’écran d’une boîte de dialogue Modifier la relation vous permettant de sélectionner Intégrité référentielle supposée.

Conditions d’utilisation du paramètre Intégrité référentielle supposée

Il s’agit d’un paramètre avancé qui est activé uniquement en cas d’utilisation de DirectQuery pour la connexion aux données. Pour que le paramètre Intégrité référentielle supposée fonctionne correctement, les conditions suivantes sont requises :

  • Les données de la colonne De dans la relation ne peuvent jamais avoir de valeur Null ou vide
  • Pour chaque valeur dans la colonne De, une valeur correspondante doit figurer dans la colonne À

Dans ce contexte, la colonne De est soit le côté Plusieurs dans une relation de Un-à-plusieurs, soit la colonne de la première table dans une relation de Un-à-un.

Exemple d’utilisation du paramètre Intégrité référentielle supposée

L’exemple suivant montre comment le paramètre Intégrité référentielle supposée se comporte quand il est utilisé dans des connexions de données. L’exemple se connecte à une source de données qui inclut une table Orders, une table Products et une table Depots.

  • Dans l’illustration suivante qui présente les tables Orders et Products, il existe une intégrité référentielle entre Orders[ProductID] et Products[ProductID]. La colonne [ProductID] de la table Orders n’a jamais la valeur Null, et chaque valeur apparaît également dans la table Products. En tant que tel, Intégrité référentielle supposée devrait être défini pour obtenir des requêtes plus efficaces. L’utilisation de ce paramètre ne modifie pas les valeurs affichées dans les visuels.

    Capture d’écran de la table Orders et de la table Products.

  • Dans l’image suivante, vous pouvez remarquer qu’il n’existe pas d’intégrité référentielle entre Orders[DepotID] et Depots[DepotID] , car la valeur de DepotID est Null pour certaines entrées de la table Orders. En tant que tel, Intégrité référentielle supposée ne devrait pas être défini.

    Capture d’écran montrant la table Orders et la table Depots.

  • Enfin, il n’existe aucune intégrité référentielle entre Orders[CustomerID] et Customers[CustID] dans les tableaux suivants. CustomerID contient une valeur, CustX, qui n’existe pas dans la table Customers. En tant que tel, Intégrité référentielle supposée ne devrait pas être défini.

    Capture d’écran de la table Orders et de la table Customers.

Définition du paramètre Intégrité référentielle supposée

Pour activer cette fonctionnalité, sélectionnez Intégrité référentielle supposée comme illustré dans l’image suivante.

Capture d’écran d’une boîte de dialogue Modifier la relation vous permettant de sélectionner Intégrité référentielle supposée.

Une fois sélectionné, le paramètre est validé par rapport aux données pour s’assurer qu’il n’y a pas de valeur Null ou de lignes incohérentes. Toutefois, lorsque le nombre de valeurs est très important, la validation ne garantit pas l’absence de problème d’intégrité référentielle.

De plus, la validation se produisant au moment de l’édition de la relation, elle ne reflète pas d’éventuelles modifications ultérieures des données.

Que se passe-t-il si vous définissez erronément le paramètre Intégrité référentielle supposée ?

Si vous définissez Intégrité référentielle supposée quand il existe des problèmes d’intégrité référentielle dans les données, ce paramètre n’entraîne pas d’erreurs. En revanche, cela entraîne des incohérences apparentes des données. Par exemple, dans le cas de la relation à la table Depots décrite ici, il en résulterait ce qui suit :

  • Un visuel montrant le total de Order Qty indiquerait une valeur de 40.
  • Un élément visuel indiquant le total Order Qty by Depot City indiquerait une valeur totale de seulement 30, car il n’inclurait pas l’Order ID 1, où DepotID a la valeur Null.