Requêtes complexes
Présentation
Le chapitre précédent, Tableau et les bases de données, vous a présenté le mécanisme des relations, qui est le principal outil de Tableau pour vous permettre de combiner différents jeux de données. Nous allons maintenant voir le calcul de relations, le mécanisme alternatif des unions, et utiliser la transformation de données par la permutation de colonnes en lignes.
Tous ces mécanismes sont utilisables, quel que soit le format technique des données, base de données ou fichier. Nous allons les présenter à partir d’une série de fichiers sur la participation aux élections européennes.
Vous pouvez télécharger l’ensemble des fichiers utiles pour ce chapitre depuis la page Informations générales.
Faire une union de fichiers semblables
Nous allons commencer par faire une carte de la participation aux dernières élections à l’Europarlement :
Créez un nouveau classeur Tableau et connectez-le au fichier turnout-2024.csv (turnout étant le terme anglais pour désigner la participation électorale).
Le champ Country Id doit avoir le rôle géographique Pays/région (attribuez-le si jamais Tableau ne le détecte pas automatiquement).
Le taux de participation est indiqué dans le champ Rate, avec une valeur entre 0 et 100. Nous voudrions l’amener entre 0 et 1 afin d’en faire un pourcentage, et utiliser la fonction ATTR pour en faire une mesure non-agrégeable :
Créez un champ calculé nommé Participation avec la formule suivante :
ATTR([Rate] / 100)
Affectez au champ Participation le format de nombre Pourcentage avec une décimale.
Les champs Update Status et Update Time (statut et date de mise à jour) ne nous intéressent pas, et Rate ne nous intéresse plus, vous pouvez les masquer tous les trois.
La participation est un ratio et non une quantité ; en l’absence de facteur de pondération le type de carte le plus logique est donc une carte de couleurs (choroplèthe).
Réalisez la carte ci-dessous.

Participation...
Faire une relation entre fichiers
L’inconvénient de la carte choroplèthe est d’accorder à chaque pays une importance visuelle correspondant à sa superficie, ce qui est trompeur en termes électoraux (sans même parler du problème classique de la projection de Mercator, qui grossit les zones éloignées de l’équateur). Par exemple, la grande Finlande (FIN, 5 millions d’habitants) est beaucoup moins peuplée que des pays qui semblent tout petits sur la carte comme la Belgique (BEL, 11 millions) ou les Pays-Bas (NLD, 17 millions).
Nous voudrions donc faire une seconde version de la carte, où chaque pays serait représenté par une bulle plus ou moins foncée selon la participation électorale, et de taille proportionnelle à sa population. Pour cela, nous allons utiliser le fichier Populations Européennes.xlsx (ce fichier est issu d’un copier-coller d’un tableau de la page Demographics of Europe de Wikipedia, complété par des estimations de l’ONU pour les petits pays, https://population.un.org/wpp/downloads?folder=Standard%20Projections&group=Most%20used).

Les données du fichier Populations Européennes.xlsx
Le code pays, sur trois caractères (le nom officiel de ce codage est ISO 3166-1 alpha-3, il a l’avantage d’être connu par le référentiel...
Permuter les colonnes en lignes
Nos deux sources de données ne gèrent pas les années de la même manière ; du côté de la table turnout, il y a une colonne pour les années et une colonne pour la participation, et chaque pays a autant de lignes que d’années. Dans les fichiers Populations européennes par contre, chaque pays correspond à une seule ligne, avec trois chiffres de population dans trois colonnes différentes, nommées 1973, 1998 et 2020.

Comparaison entre les deux structures de données
Afin de corriger la structure du nouveau fichier, nous allons faire pivoter les données, afin que, pour chaque pays, les trois colonnes se transforment en trois lignes.
Dans l’onglet Source de données, sélectionnez la table Pop pour faire apparaître ses données.
Dans le volet du bas, sélectionnez les trois en-têtes de colonnes 1973, 1998 et 2020.
Faites un clic droit et choisissez Permuter.

Permutation de colonnes en lignes
Les colonnes sélectionnées sont remplacées par deux nouvelles colonnes :
-
La première contient les anciens noms de colonnes permutées, autrement dit les années ; la version française de Tableau la nomme Permuter les noms de champs (ce qui est la traduction assez approximative de Pivot Field Names).
-
La seconde contient les valeurs...
Utiliser un calcul de relation
Revenons maintenant sur la feuille graphique, et changeons le type de carte :
Dans l’étagère Repères, modifiez le type de repère en Cercle.
Glissez le champ kHab sur la propriété Taille.
Réglez la taille des bulles et l’alignement des étiquettes à votre convenance.
Si la carte vous semble correcte, vérifiez l’échelle de taille ou les infobulles : la population de l’Allemagne y est évaluée à 244 1765 milliers d’habitants, soit 244 millions d’Allemands, ce qui semble un peu excessif ; la même erreur se retrouve sur tous les pays (178 millions de Français, 31 millions de Belges, etc.). La cause est évidente et se voit en regardant la mesure située sur la propriété Taille, qui est SOMME(kHab) : pour chaque pays, il y a trois chiffres de population (celui de 1973, celui de 1998 et celui de 2020), et Tableau présente la somme des trois.
Pour chaque année électorale, nous devons donc sélectionner un seul chiffre de population et non la somme des trois ; comme les années électorales et les années de population ne correspondent pas exactement, le plus logique serait de prendre le chiffre de population avec la date la plus proche de l’année électorale....
Descendre au niveau des tables physiques
Nous ne nous en étions pas soucié(e)s jusqu’à maintenant, mais Tableau permet de travailler sur deux niveaux de tables de données :
-
Le niveau supérieur est celui des tables logiques, que nous avons utilisées jusqu’à maintenant sans chercher plus loin. Les tables logiques sont liées entre elles par les relations, qui sont représentées par des traits courbes rappelant des spaghettis (la version anglaise parle de noodle relations).
-
Chaque table logique peut elle-même être constituée d’une ou plusieurs tables physiques. À l’intérieur de la même table logique, les tables physiques sont reliées par des jointures, représentées par des traits droits.
Cette distinction entre le niveau logique et niveau physique crée une marge de manœuvre entre la façon dont les données sont organisées en amont de Tableau et la mécanique des relations. Nous allons présenter cela avec l’exemple du fichier du club de gym que nous avons rencontré au chapitre Tableau et les bases de données.
Utiliser une jointure à la place d’une relation
Nous avons vu que les données de ce fichier ne sont pas organisées selon un modèle analytique, et que cela entraîne une erreur de calcul. Une solution à ce problème consiste à remplacer la relation spaghetti entre tables logiques par une jointure entre tables physiques.
Téléchargez le fichier gym2.xlsx depuis la page Informations générales (il contient juste deux lignes de données supplémentaires, destinées à illustrer des cas particuliers).
Créez un nouveau classeur Tableau, et connectez-le au fichier gym2.xlsx.
Sur l’onglet Source de données, glissez la plage Excel Inscriptions dans la partie droite.
Faites un clic droit sur la nouvelle table et choisissez Ouvrir.

Ouvrir une table...
Pour aller plus loin…
Les différents mécanismes de combinaison de tables de données présentent des possibilités puissantes pour ceux qui ont pris le temps de se familiariser à leur complexité ; si vous vous intéressez à ce sujet, le meilleur moyen de les découvrir n’est pas dans ce livre consacré à Tableau, mais plutôt dans les ressources sur le requêtage avancé en SQL.
Cette section est donc destinée aux connaisseurs, afin de leur donner les quelques informations dont ils auront besoin pour transposer leurs compétences dans Tableau (y compris avec des fichiers, et pas seulement des bases de données). Si vous ne faites pas partie des initiés, commencez plutôt par les exercices de la section Exercices : utiliser une relation complexe, qui seront un bon début dans la découverte des relations complexes.
Paramétrage fin des relations
Sans doute avez-vous remarqué la section Options de performance située juste sous les conditions de relation ? L’option Cardinalité permet à Tableau d’améliorer ses requêtes et/ou sa gestion des relations en déclarant une relation un-à-plusieurs ou un-à-un. L’option Intégrité référentielle permet à Tableau d’utiliser (ou d’émuler)...
Exercices : utiliser une relation complexe
Nous voudrions maintenant faire une seconde version de la carte, où cette fois-ci la taille des bulles doit dépendre non plus de la population, mais du nombre de sièges de députés accordés à chaque pays. Vous trouverez les informations dans le fichier Sièges.xlsx. Comme ce nombre de sièges a tendance à beaucoup varier, le fichier indique les différentes versions avec l’année de début et l’année de fin :

Les versions successives du nombre de sièges accordés à l’Allemagne
Par exemple, l’Allemagne a eu 81 sièges de 1979 à 1993 ; suite à la réunification avec l’Allemagne de l’Est, ce nombre est monté à 99 de 1994 à 2013, puis il a été réduit à 96 à partir de 2014 (suite à l’intégration de nouveaux pays dans l’UE).
Les dates de fin vides sont logiques (on ne sait pas à quel moment le nombre d’eurodéputés d’un pays va changer à nouveau) mais techniquement elles viendront compliquer les choses ; c’est également le cas de l’année 2024, qui n’apparaît pas explicitement dans le fichier turnout-2024.csv. Commencez donc par placer votre curseur...
Solutions commentées : utiliser une relation complexe
Exercice 1 : ajoutez le fichier Sièges.xlsx à la source de données, en le reliant à l’union des fichiers turnout.
Pas de difficulté particulière à ce stade :
Revenez sur l’onglet Source de données, cliquez sur Ajouter, choisissez une source de données de type Microsoft Excel, et allez chercher le fichier Sièges.xlsx.
Glissez la feuille Sièges à côté de la table turnout.

Ajout d’un fichier Excel
Exercice 2 : établissez les conditions de relation sans vous préoccuper des cas de données vides.
Imaginez que vous êtes, par exemple, sur la première ligne de données du fichier turnout-1979-2019.csv : l’élection de 1979 en Belgique, avec 91.36 % de participation. Regardez maintenant le fichier Sièges.xlsx en vous demandant comment trouver le nombre de sièges correspondant :
-
le nombre de sièges doit être celui de la Belgique,
-
vous devez choisir la version valable au moment de l’élection, dont celle qui va de 1979 à 2003.
Généralisons la logique ; vous avez choisi la ligne qui correspond à ces deux conditions :
-
Le pays de la table turnout doit être le même que celui de la table Sièges.
-
L’année...