Créer des calculs efficaces
Si vos données ne fournissent pas toutes les informations dont vous avez besoin pour répondre à vos questions, vous pouvez créer des champs calculés qui vous aideront dans votre analyse.
Dans un champ calculé, vous pouvez définir une constante codée (par exemple un taux d’imposition), effectuer des opérations mathématiques très simples telles qu’une soustraction ou une multiplication (par exemple, le chiffre d’affaires moins les coûts), utiliser des formules mathématiques plus complexes, exécuter des tests logiques (IF/THEN, CASE), effectuer des conversions de type, envoyer des expressions à des services externes tels que R, et nombreuses autres opérations.
Il y a plusieurs types de calculs différents dans Tableau.
Calculs de base et d’agrégation : Ces types de calcul sont générés en tant que partie intégrante de l’interrogation des données originales et sont calculés dans la base de données. En général, les calculs de base et d’agrégations sont très bien adaptés, et il existe de nombreuses techniques d’affinement des bases de données qui peuvent améliorer leurs performances.
Calculs de table : ces calculs sont réalisés par Tableau dans l’ensemble des résultats de la requête. Si cela signifie plus de travail pour Tableau, les calculs de table sont généralement effectués sur un ensemble d’enregistrements beaucoup plus restreint que dans la source de données d’origine. Si les performances de calcul de table sont un problème (éventuellement parce que l’ensemble de résultats retournés à Tableau est très volumineux), vous pouvez envisager de renvoyer certains aspects du calcul à la couche de la source de données. L’une des manières de le faire consiste à agréger les données puis à effectuer le calcul sur les données agrégées.
Expressions de niveau de détail : les expressions de niveau de détail sont générées en tant que partie intégrante de l’interrogation des données originales et sont calculées dans la base de données. Elles sont exprimées en tant que sélection imbriquée, si bien qu’elles sont dépendantes des performances de la base de données. Un calcul de table ou une combinaison peut offrir de meilleures performances qu’une expression de niveau de détail, ou inversement.
Si vous soupçonnez que les performances médiocres sont dues à une expression de niveau de détail, vous pouvez essayer de la remplacer par un calcul de table ou une fusion des données pour voir si les performances s’améliorent. À titre d’exemple, vous pouvez consulter l’exemple 2 dans Ordre des opérations Tableau.
Les expressions de niveau de détail peuvent être affectées par l’élimination des jonctions. Consultez la section Estimation de l’intégrité référentielle pour les jointures si vos requêtes ralentissent lorsque vous utilisez des expression de niveau de détail.
Pour plus d’informations, consultez le livre blanc de Tableau Understanding Level of Detail (LOD) Expressions (Comprendre les expressions de niveau de détail).
Utiliser des paramètres pour les calculs conditionnels
Une technique courante dans Tableau consiste à afficher une commande de paramètre afin que les utilisateurs puissent sélectionner une valeur déterminant le mode d’exécution d’un calcul. En règle générale, pour que l’utilisateur dispose d’options faciles à comprendre, il est important de créer le paramètre en tant que type de chaîne. Mais les calculs numériques sont beaucoup plus rapides que les calculs de chaîne de caractères, donc utilisez la fonction Afficher en tant que pour les paramètres : affichez les étiquettes de texte, mais utilisez les valeurs d’entiers sous-jacentes pour la logique de calcul. Pour plus d’informations, consultez Créer des paramètres.
Convertir des champs de date
Les utilisateurs utilisent souvent des données de date qui ne sont pas stockées dans des formats de date natifs. Par exemple, une date peut être une chaîne de caractères ou un horodatage numérique. Vous pouvez utiliser la fonction DATEPARSE si vos données la prennent en charge. Cette fonction est disponible pour les connexions de fichiers texte et Microsoft Excel non-héritées et les sources d’extraits de données MySQL, Oracle, PostgreSQL et Tableau. Sinon, analysez le champ en une chaîne de date du type “2012-01-01”. Les chaînes ISO sont préférées parce qu’elles sont indépendantes des paramètres régionaux. Transmettez ensuite la valeur à la fonction DATE. Si les données d’origine sont un champ numérique, les convertir d’abord en une chaîne de caractères, puis en une date ne sera pas du tout efficace. Il est préférable de conserver les données sous format numérique et d’utiliser DATEADD et les valeurs de date littérales pour effectuer le calcul. Les gains de performances peuvent être importants avec des ensembles de données volumineux. Consultez Fonctions de date pour plus d’informations sur ces fonctions.
Utiliser les instructions logiques CASE
Lorsque vous travaillez avec des instructions logiques complexes, les instructions CASE peuvent être plus rapides que les instructions IF ou ELSEIF.
Gardez à l’esprit que ELSEIF est plus rapide que ELSE IF, parce qu’une instruction imbriquée IF calcule une seconde instruction IF plutôt que d’être calculée en tant que partie de la première.
Pour plus d’informations, consultez le livre blanc Concevoir des classeurs efficaces .
Agréger les mesures
Si les vues que vous avez créées sont lentes, vérifiez que vous travaillez avec des mesures agrégées. Avec des mesures désagrégées, vous pouvez essayer de visualiser un grand nombre de lignes de données à la fois. Pour réduire le nombre de lignes, agrégez les données. Pour cela, sélectionnez Analyse > Agréger les mesures.
Conseils de calcul
De nombreuses autres actions mineures peuvent améliorer les performances des calculs.
Les valeurs de comptage distinctes sont l’un des types d’agrégation les plus lents dans quasiment toutes les sources de données. Utilisez l’agrégation COUNTD avec parcimonie.
L’utilisation de paramètres avec une large portée d’impact (par exemple dans une instruction SQL personnalisée) peut affecter les performances du cache.
Le filtrage des calculs complexes peut avoir pour effet de manquer des index dans les données sous-jacentes.
Les fonctions de script telles que RAWSQL et SCRIPT_* pour l’intégration avec des services externes peuvent être lentes, en particulier si elles contiennent de nombreuses valeurs effectuant un va-et-vient depuis le serveur DBMS/R.
Utilisez NOW uniquement si vous avez besoin du niveau de détail Horodatage. Utilisez TODAY pour les calculs de niveau de date.
Gardez à l’esprit que tous les calculs de base sont transmis aux données sous-jacentes, même les calculs littéraux tels que les chaînes de caractères d’étiquettes. Si vous avez besoin de créer des étiquettes (par exemple pour des en-têtes de colonnes) et que vos données sont très volumineuses, créez une source de données en texte simple/fichier Excel comportant un seul enregistrement pour les contenir afin qu’elles ne viennent pas surcharger la source de données volumineuse.