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é présente quelques exigences des données sous-jacentes, et elle est disponible uniquement lors de l’utilisation de DirectQuery ou en mode Direct Lake dans le modèle sémantique de Microsoft Fabric.

Note

Supposons que le paramètre d’intégrité référentielle pour le modèle sémantique de Microsoft Fabric ne peut être défini que par le biais du service à l’aide d’un navigateur web. Elle ne peut pas être définie à l’aide de Power BI Desktop.

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 pour sélectionner Présumer intégrité référentielle.

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 montrant la table Commandes et la table Produits.

  • 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. Par conséquent, l’intégrité référentielle supposene doit pas être définie.

    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. Par conséquent, l’intégrité référentielle supposene doit pas être définie.

    Capture d’écran montrant la table Orders et 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 qui vous permet 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, pour les cas avec un grand nombre de valeurs, la validation n’est pas une garantie qu’il n’existe aucun problème d’intégrité référentielle.

En outre, la validation se produit au moment de la modification de la relation et ne reflète aucune modification ultérieure 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.