Estimation de l’intégrité référentielle pour les jointures

Dans certains cas, vous pouvez améliorer les performances des requêtes pour les jointures en sélectionnant l’option Estimer l’intégrité référentielle à partir du menu Données. Lorsque vous utilisez cette option, Tableau n’inclut la table liée dans la requête que si elle est spécifiquement référencée par des champs de la vue.

L’utilisation de ce paramètre convient lorsque vous savez que vos données disposent de l’intégrité référentielle (voir définition ci-dessous) mais que votre base de données ne l’impose pas ou ne peut pas l’appliquer. Si vous avez la possibilité de configurer l’intégrité référentielle, cela est préférable à l’utilisation de ce paramètre car elle permet d’améliorer les performances dans la base de données et dans Tableau. L’option Estimer l’intégrité référentielle de Tableau peut uniquement affecter les performances du côté de Tableau. Si vos données n’ont pas d’intégrité référentielle et que vous activez ce paramètre, les résultats de la requête peuvent ne pas être fiables.

Pour comprendre ce qu’est l’intégrité référentielle, imaginez que vous vous connectez à une base de données de vente qui comporte deux tables : Ventes et Catalogue Produits. Voici comment se présentent ces deux tables :

Ventes

ID produit (clé étrangère)Montant des ventesDate de transaction
110010/1/2012
1200010/2/2012
2509/30/2012
3108/21/2012

Catalogue Produits

ID produit (clé primaire)Nom du produit
1Tablette 10 pouces
2Smartphone
3Lampe de bureau
4Clé USB

Dans la mesure où tous les produits qui sont vendus doivent être répertoriés dans le catalogue des produits, chaque ligne de la table Ventes possède une ligne correspondante dans la table Catalogue produits. Lorsque ces deux tables sont liées sur la base de l’ID produit, vous obtenez une table du type suivant :

ID produitNom du produitID produitMontant des ventesDate de transaction
1Tablette 10 pouces110010/1/2012
1Tablette 10 pouces1200010/2/2012
2Smartphone2509/30/2012
3Lampe de bureau3108/21/2012

A présent, imaginons que vous créez une vue pour connaître le montant des ventes par région. Par défaut, si vous faites glisser le champ Montant des ventes vers la vue, vous créez une requête de ce type :

SELECT SUM([Sales Amount]) FROM [Sales] S INNER JOIN [Product Catalog] P ON S.ProductID = P.ProductID

Cependant, si vous sélectionnez l’option Estimer l’intégrité référentielle, vous indiquez à Tableau que les tables liées présentent une intégrité référentielle. En d’autres termes, vous confirmez que la table Ventes aura toujours une ligne correspondante dans la table Catalogue des produits. Puisque c’est le cas, Tableau n’a pas besoin d’informations de la table Catalogue des produits pour renvoyer les résultats. Si vous faites glisser le champ Montant des ventes jusqu’à la vue, Tableau est alors en mesure de simplifier la requête :

SELECT SUM([Sales Amount]) FROM [Sales]

Cette requête simplifiée accélère le plus souvent le renvoi des résultats, car elle supprime l’opération de liaison. Cette option n’agit que sur les liaisons internes et n’affecte pas les sources de données à une table unique.

 

Merci de vos commentaires !Avis correctement envoyé. Merci