1. Livres & vidéos
  2. Data visualisation avec Tableau Desktop
  3. Tableau et les bases de données
Extrait - Data visualisation avec Tableau Desktop Des graphiques aux tableaux de bord interactifs
Extraits du livre
Data visualisation avec Tableau Desktop Des graphiques aux tableaux de bord interactifs Revenir à la page d'achat du livre

Tableau et les bases de données

Présentation

Jusqu’à maintenant, nous avons surtout travaillé avec des données contenues dans un seul fichier plat. Ce chapitre a un double objectif : vous présenter comment se connecter directement à une base de données, et comment utiliser plusieurs tables en créant des relations entre elles.

Ce mécanisme de relations ne concerne pas que les bases de données, mais s’applique à l’identique à des données réparties entre plusieurs fichiers. Si vous n’avez aucune base de données à votre disposition, mais que vous souhaitez enrichir votre analyse par des données disponibles dans des fichiers différents, ce chapitre vous concerne donc aussi.

Ce chapitre est rédigé selon l’hypothèse que vous avez un serveur MySQL à votre disposition (ce SGBD est gratuit et facilement installable sur n’importe quelle machine) et que vous avez une connaissance minimale de son fonctionnement. Si ce n’est pas le cas, vous pouvez utiliser un autre SGBD relationnel, moyennant de petites adaptations (vous trouverez sur la page Informations générales les fichiers de données SQL pour Oracle, MS SQL Server et PostgreSQL). Si vous n’avez rien de tout cela, vous pouvez remplacer les tables MySQL par les fichiers .csv portant les mêmes noms (toujours sur la page Informations...

Se connecter à une base de données relationnelle

Tableau connaît une bonne centaine de systèmes de gestion de base de données (SGBD) différents, des classiques Oracle ou SQL Server jusqu’aux plus récents Redshift ou Snowflake. Si par malheur le vôtre n’est pas prévu, vous pouvez toujours vous rabattre vers un connecteur générique, ODBC ou JDBC.

Selon les cas, Tableau peut établir la connexion directement ou vous demander d’installer un connecteur (aussi appelé pilote). Ces connecteurs sont le plus souvent gratuits, ils sont téléchargeables soit depuis www.tableau.com, soit depuis le site web de leur propre éditeur.

Vous trouverez depuis la page Informations générales le code SQL pour créer les tables de la base de données de test sur votre MySQL. Une connaissance même minimale de ce SGBD doit vous suffire pour recréer la base de données de test. Si vous souhaitez utiliser un autre SGBD, vous trouverez aussi le script adapté aux dialectes SQL les plus courants. Si, à l’inverse, vous ne connaissez pas du tout SQL ou si vous n’avez aucun SGBD sous la main, vous pourrez utiliser les exports en fichiers .CSV des tables de la base de données test.

Installation du connecteur

L’exemple présenté ici utilise une base de données MySQL, qui est un SGBD relationnel...

Utiliser et relier les tables

Notre table principale sera celle des Ventes.

 Dans l’onglet Source de données, faites glisser la table Ventes depuis la section Table du volet de gauche vers la partie droite de l’écran.

images/08SOB008.png

Utilisation de la table Ventes

Nous nous retrouvons maintenant en terrain familier, avec la liste des champs de la table en bas à gauche de l’espace de travail. Dans la partie en bas à droite, vous pouvez cliquer sur le bouton Mettre à jour maintenant pour visualiser les premières lignes de données.

Mise en relation automatique

Chaque ligne de données sur la table des ventes concerne une seule commande, qui est indiquée par son numéro de commande (colonne IdComm), et un seul produit, lui aussi indiqué par son numéro de produit (colonne IdProduit).

Dans nos graphiques, nous voudrons évidemment afficher le nom des produits et pas leur numéro. Pour trouver le nom correspondant à chaque numéro, il faut utiliser la table Produits.

 Glissez-la à côté de la table Ventes.

images/08SOB009.png

Les deux tables liées par l’IdProduit

Tableau a créé une relation entre les deux tables, le cadre situé en bas au milieu vous indique que cette relation repose sur l’égalité IdProduit de la table Ventes = IdProduit de la table Produits. Dit de manière moins mathématique : si une ligne de la table Ventes comporte l’IdProduit 6, les informations relatives à ce produit sont disponibles dans la table Produits pour ce même IdProduit 6.

Avec certaines configurations, il est possible que la mise en relation automatique ne se fasse pas. Vous devrez alors indiquer manuellement la relation d’égalité entre les IDProduit, sur le modèle de ce que nous ferons dans la section suivante, Mise en relation manuelle.

Comment Tableau a-t-il deviné qu’il fallait faire cette égalité-là ? Il utilise pour cela deux mécanismes :

  • Dans une base de données mieux construite que notre base de test, cette logique aurait été déclarée auprès du SGBD par une contrainte de clef étrangère (en anglais et en SQL : foreign key constraint). Tableau aurait alors détecté cette contrainte et en aurait...

Créer et utiliser des extraits de données

Pour l’utilisateur de Tableau, la principale différence entre travailler à partir de fichiers ou à partir d’une base de données est qu’avec une base de données, enregistrer en .twbx ne suffit plus pour conserver les données, vous devez également créer un extrait.

Notion d’extrait

Que vous travailliez à partir de fichiers ou d’une base de données, l’onglet Source de données propose deux modes de connexion aux données : En direct ou avec un Extrait.

images/08SOB017.png

Mode de connexion

La connexion en direct implique que Tableau ne conserve pas de copie des données, et interroge la source (fichier ou base de données) à l’ouverture du classeur Tableau et à chaque modification de l’onglet Source de données. Ce mode de connexion permet de s’assurer que les données sont toujours à jour (du moins au moment où vous ouvrez le classeur) ; cependant, il peut provoquer des lenteurs, et surtout votre classeur deviendra inutilisable si vous perdez l’accès au(x) fichier(s) de données ou à la base de données source.

À l’inverse, l’extrait est une copie des données issues de la requête, sous une forme compressée afin qu’elles n’occupent pas trop de place ; vous éviterez ainsi les temps morts lors de l’interrogation des données. Surtout, quand vos données proviennent d’une source en ligne, cela vous permettra de travailler même si vous êtes déconnecté(e). Réciproquement, l’inconvénient est que votre extrait ne sera pas nécessairement à jour si la source de données est susceptible d’évoluer (ce sera à vous de demander les mises à jour).

Le terme d’extrait (« extract » dans la version anglaise) ne doit pas vous tromper : le plus souvent, il s’agit de faire une copie intégrale des données de la requête.

Quelles sont les données enregistrées et sous quelle forme le sont-elles ?...

Calculer avec une base de données

Une conséquence un peu inattendue du choix entre connexion en direct ou par extrait est que les possibilités de calculs peuvent être différentes. En connexion directe en effet, Tableau va éviter de faire les calculs lui-même et préfèrera les traduire en SQL afin qu’ils soient effectués par la base de données source. Cela a deux conséquences :

  • Les fonctions que Tableau ne sait pas traduire en SQL sont interdites ;

  • Réciproquement, Tableau autorise une série de nouvelles fonctions, dites RAW_SQL, permettant d’exploiter directement la syntaxe SQL.

Fonctions interdites avec une connexion En direct

La connexion en direct est censée être plus simple que les extraits, et les bases de données sont normalement plus puissantes que les fichiers ; il est donc assez paradoxal de perdre des fonctionnalités de calcul en les utilisant ! Pour ne rien arranger, Tableau gère la situation de manière assez cavalière, menant parfois l’analyste à des interrogations aussi douloureuses qu’injustifiées sur sa santé mentale. Il n’est donc pas inutile d’expérimenter la chose à travers un petit test…

Le directeur juridique prépare une opération de partenariat sur les sodas, il voudrait avoir le chiffre d’affaires des ventes de sodas auprès des cinq meilleurs clients de 2024 sur cette gamme.

 Reprenez la requête présentée au début de ce chapitre, comportant les tables Ventes, Commandes et Produits. Ajoutez-y la table Clients, en relation avec Commandes (la condition de relation doit être le champ IDclient).

 Ajoutez la table Gammes en relation avec la table Produits (la condition de relation doit être sur le champ IDgamme).

 Réglez le mode de connexion en Extrait, puis passez sur une feuille graphique.

 Cochez les champs IDclient et IDgamme en dimensions, et masquez le champ IDrayon.

 Créez un champ calculé nommé Année, avec la formule ci-dessous, et faites-en une dimension.

DATEPART('year', [Date Comm]) 

 Utilisez ce champ calculé pour filtrer sur l’année 2024 ; filtrez également le champ IDgamme sur la valeur 10 (les sodas), puis...

Exercices

Exercice 1 : créez un nouveau classeur et connectez-le à nouveau à la base de données exemple.

Exercice 2 : dans votre classeur Tableau, faites la requête comportant l’ensemble des tables du flocon.

Exercice 3 : vous devez pouvoir travailler en étant déconnecté de la base de données, et que tout soit dans le classeur. Faites le nécessaire.

Exercice 4 : qualifiez les données en dimensions ou mesures.

Exercice 5 : nous voudrions savoir, pour chaque ligne de données, quelle proportion du chiffre d’affaires total elle représente ; créez pour cela un champ calculé utilisant une fonction de passage direct (si vous ne connaissez pas ou mal le SQL, allez directement à la solution). Pour tester, faites un tableau présentant le chiffre d’affaires et le pourcentage par année.

Exercice 6 : ajoutez un second calcul de pourcentage du chiffre d’affaires par année, en utilisant cette fois-ci un calcul de table.

Exercice 7 : filtrez sur l’année 2024, puis, sur la feuille Source de données, ajoutez un filtre de requête pour ne conserver que le rayon Boissons. Expliquez la différence entre les deux calculs de pourcentage.

Exercice 8 : dupliquez votre classeur, puis trouvez un moyen pour travailler en mode...

Solution commentée : utiliser un datamart en flocon

Exercice 1 : créez un nouveau classeur et connectez-le à nouveau à la base de données exemple.

Pas de difficulté avec cet exercice, il suffit de reproduire la connexion que vous avez déjà réalisée au début de ce chapitre.

images/08SOB006.png

Connexion à la base

Exercice 2 : dans votre classeur Tableau, faites la requête comportant l’ensemble des tables du flocon.

Il faut donc reconstituer le schéma de jointures par des relations Tableau. Normalement, il n’y a que peu d’occasions d’erreur :

  • La table principale doit être la table de faits, faits_agg_ventes, vous devez donc commencer par elle. Dans la pratique, avoir la mauvaise table principale ne devrait pas changer vos résultats, mais rendra votre schéma de relations plus compliqué à lire.

  • La table Gammes doit bien être liée à la table Produits, et la table Rayons à la table Gammes. Toutes les autres sont liées directement à la table de faits.

  • La relation Faits/Produits doit être faite sur IdProd = IdProduit, et la relation Faits/Tranches Horaires sur IdTH = IdTranche. Toutes les autres relations doivent se faire automatiquement par homonymie.

images/08SOB101.png

Schéma du datamart en flocon

Exercice 3 : vous devez pouvoir travailler en étant déconnecté de la base de données, et que tout soit dans le classeur. Faites le nécessaire.

 Enregistrez le classeur au format .twbx et sélectionnez le mode de connexion Extrait.

Exercice 4 : qualifiez les données en dimensions ou mesures.

 Dans les propriétés du volet Données, sélectionnez Regrouper par dossier les données pour y voir plus clair.

 Dans un modèle en étoile ou en flocon, les mesures sont nécessairement sur la table des faits : le CA est donc bien une mesure.

 Convertissez en dimension les champs Allege, Mini, Maxi et NbEnf, provenant de tables de dimension.

Que faire des quatorze champs...