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
| Catalogue Produits
|
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 produit | Nom du produit | ID produit | Montant des ventes | Date de transaction |
1 | Tablette 10 pouces | 1 | 100 | 10/1/2012 |
1 | Tablette 10 pouces | 1 | 2000 | 10/2/2012 |
2 | Smartphone | 2 | 50 | 9/30/2012 |
3 | Lampe de bureau | 3 | 10 | 8/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 jointures internes et n’affecte pas les sources de données à une table unique.