Le temps de reporting dans Excel s'Ă©chappe rapidement â la tendance vers des outils pratiques de prĂ©sentation et d'analyse des informations est perceptible dans tous les domaines. Nous avons longtemps discutĂ© de la numĂ©risation de la construction de rapports et avons choisi le systĂšme de visualisation et d'analyse en libre-service Tableau. Alexandre Bezugly, responsable du dĂ©partement des solutions analytiques et des rapports du groupe « M.Video-Eldorado », a partagĂ© son expĂ©rience et les rĂ©sultats de la mise en place d'un tableau de bord opĂ©rationnel.
Je dirai tout de suite que tout ce qui avait Ă©tĂ© prĂ©vu n'a pas pu ĂȘtre rĂ©alisĂ©, mais l'expĂ©rience Ă©tait intĂ©ressante, j'espĂšre qu'elle sera utile pour vous aussi. Et si quelqu'un a des idĂ©es sur la façon de faire mieux, je serais trĂšs reconnaissant pour les conseils et les idĂ©es.

Ci-dessous, sur ce Ă quoi nous avons fait face et ce que nous avons appris.
Par quoi nous avons commencé
Chez « M.Video-Eldorado », il existe un modÚle de données bien élaboré : des informations structurées avec la profondeur de stockage requise et un grand nombre de rapports à format fixe (voir plus en détail ). Les analystes en font soit des tableaux croisés dynamiques ou des envois formatés dans Excel, soit de belles présentations dans PowerPoint pour les utilisateurs finaux.
Il y a environ deux ans, au lieu de rapports Ă format fixe, nous avons commencĂ© Ă crĂ©er des rapports analytiques dans SAP Analysis (un complĂ©ment Ă Excel, en fait â un tableau croisĂ© dynamique sur une machine OLAP). Mais cet outil n'a pas pu rĂ©pondre aux besoins de tous les utilisateurs, la plupart ont continuĂ© Ă utiliser les informations traitĂ©es supplĂ©mentaires par les analystes.
Nos utilisateurs finaux se divisent en trois catégories :
La direction supérieure. Elle demande des informations présentées de maniÚre claire et facilement compréhensible.
La direction intermédiaire, utilisateurs avancés. Ils s'intéressent à l'exploration des données et sont capables de créer des rapports de maniÚre autonome si les outils sont disponibles. Ce sont eux qui sont devenus les utilisateurs clés des rapports analytiques dans SAP Analysis.
Les utilisateurs de base. Ils ne sont pas intéressés par l'analyse autonome des données, utilisent des rapports avec une liberté d'action limitée, sous forme d'envois et de tableaux croisés dans Excel.
Notre idée était de répondre aux besoins de tous les utilisateurs et de leur fournir un outil unique et compact. Nous avons commencé avec la haute direction. Ils avaient besoin de panneaux pratiques pour analyser les principaux résultats commerciaux. Ainsi, nous avons démarré avec Tableau et avons d'abord choisi deux axes : les indicateurs de vente au détail et en ligne avec une profondeur et une largeur d'analyse limitées, qui couvriraient environ 80 % des données demandées par la direction.
Ătant donnĂ© que les utilisateurs des tableaux de bord Ă©taient la haute direction, un KPI supplĂ©mentaire du produit est apparu : la rapiditĂ© de rĂ©ponse. Personne ne va attendre 20 Ă 30 secondes pour que les donnĂ©es se mettent Ă jour. La navigation devait se faire en 4 Ă 5 secondes, et idĂ©alement instantanĂ©ment. Malheureusement, nous n'avons pas rĂ©ussi Ă atteindre cet objectif.
Voici Ă quoi ressemblait la maquette de notre tableau de bord principal :

L'idée clé était de rassembler les principaux KPI moteurs, qui en fin de compte en comprenaient 19, à gauche et de représenter leur dynamique ainsi que leur répartition selon les principaux attributs à droite. La tùche semble simple, la visualisation est logique et claire, jusqu'à ce que l'on se plonge dans les détails.
Détail 1. Volume des données
La table principale des ventes sur l'annĂ©e compte environ 300 millions de lignes. Comme il est nĂ©cessaire de reflĂ©ter Ă©galement la dynamique par rapport Ă l'annĂ©e prĂ©cĂ©dente et l'annĂ©e d'avant, le volume des donnĂ©es concernant les ventes rĂ©elles s'Ă©lĂšve Ă environ 1 milliard de lignes. De plus, des informations sur les donnĂ©es prĂ©visionnelles et un bloc de ventes en ligne sont conservĂ©es sĂ©parĂ©ment. Par consĂ©quent, mĂȘme si nous avons utilisĂ© une base de donnĂ©es in-memory en colonnes SAP HANA, la vitesse de traitement de la requĂȘte pour obtenir tous les indicateurs sur une semaine depuis les entrepĂŽts actuels en temps rĂ©el Ă©tait d'environ 15 Ă 20 secondes. La solution de ce problĂšme semble Ă©vidente : une matĂ©rialisation supplĂ©mentaire des donnĂ©es. Mais cela comporte aussi des piĂšges, que nous aborderons ci-dessous.
Détail 2. Indicateurs non additives
Nos nombreux KPI sont liĂ©s au nombre de reçus. Cet indicateur reprĂ©sente un COUNT DISTINCT du nombre de lignes (en-tĂȘtes des reçus) et montre diffĂ©rentes sommes selon les attributs sĂ©lectionnĂ©s. Voici un exemple de la maniĂšre dont cet indicateur et ses dĂ©rivĂ©s doivent ĂȘtre calculĂ©s :

Pour l'exactitude des calculs, il est possible de :
- Calculer de tels indicateurs à la volée dans l'entrepÎt ;
- Calculer sur l'ensemble des données dans Tableau, c'est-à -dire en demandant à Tableau de fournir toutes les données en fonction des filtres sélectionnés avec la granularité des lignes de reçus ;
- Créer une vitrine matérialisée qui calculera tous les indicateurs pour toutes les options d'échantillonnage, donnant des résultats non-additifs différents.
Il est Ă©vident que dans l'exemple, UTE1 et UTE2 sont des attributs du matĂ©riau reprĂ©sentant la hiĂ©rarchie des produits. Ce n'est pas une chose statique, elle gĂšre l'intĂ©rieur de l'entreprise, car diffĂ©rentes catĂ©gories de produits sont gĂ©rĂ©es par diffĂ©rents responsables. Nous avons effectuĂ© de nombreuses rĂ©visions globales de cette hiĂ©rarchie, lorsque tous les niveaux Ă©taient modifiĂ©s, les interconnexions rĂ©examinĂ©es, ainsi que des modifications ponctuelles constantes, lorsque l'un des groupes passe d'un nĆud Ă un autre. Dans les rapports ordinaires, tout cela est calculĂ© en temps rĂ©el Ă partir des attributs du matĂ©riau. Dans le cas de la matĂ©rialisation de ces donnĂ©es, il est nĂ©cessaire de dĂ©velopper un mĂ©canisme de suivi de telles modifications et un rechargement automatique des donnĂ©es historiques. C'est une tĂąche assez non triviale.
Détail 3. Comparaison des données
Ce point est similaire au précédent. L'idée est qu'au sein de l'entreprise, lors de l'analyse, il est courant de former plusieurs niveaux de comparaison avec la période précédente :
Comparaison avec la période précédente (jour aprÚs jour, semaine aprÚs semaine, mois aprÚs mois)
Dans cette comparaison, il est supposé qu'en fonction de la période choisie par l'utilisateur (par exemple, la 33e semaine de l'année), nous devons montrer la dynamique par rapport à la 32e semaine. Si nous avions choisi les données pour un mois, par exemple mai, cette comparaison montrerait la dynamique par rapport à avril.
Comparaison avec l'année précédente
Le point principal ici est que lors de la comparaison par jours et par semaines, vous ne prenez pas le mĂȘme jour de l'annĂ©e prĂ©cĂ©dente, c'est-Ă -dire que vous ne pouvez pas simplement soustraire un an de l'annĂ©e en cours. Vous devez examiner le jour de la semaine en question. En revanche, lors de la comparaison des mois, il faut prendre exactement le mĂȘme jour du calendrier de l'annĂ©e prĂ©cĂ©dente. Il y a aussi des nuances avec les annĂ©es bissextiles. Dans les bases de donnĂ©es d'origine, toutes les informations sont rĂ©parties par jour, il n'y a pas de champs sĂ©parĂ©s pour les semaines, les mois ou les annĂ©es. Par consĂ©quent, pour obtenir un aperçu analytique complet dans le tableau de bord, il est nĂ©cessaire de calculer non pas une pĂ©riode, par exemple une semaine, mais 4 semaines, puis de comparer ces donnĂ©es, de reflĂ©ter la dynamique et les dĂ©viations. Ainsi, cette logique de formation de comparaison dynamique peut Ă©galement ĂȘtre mise en Ćuvre soit dans Tableau, soit du cĂŽtĂ© de la vitrine. Oui, et nous connaissions bien sĂ»r ces dĂ©tails et y avons rĂ©flĂ©chi dĂšs la phase de conception, mais prĂ©voir leur impact sur les performances du tableau de bord final Ă©tait difficile.
Lors de l'implémentation du tableau de bord, nous avons suivi un long parcours Agile. Notre objectif était de fournir le plus rapidement possible un outil fonctionnel à tester avec les données nécessaires. Nous avons donc progressé par sprints en nous concentrant sur la minimisation des travaux du cÎté des bases de données actuelles.
Partie 1. La foi en Tableau
Pour simplifier le soutien informatique et faciliter la mise en Ćuvre rapide des modifications, nous avons dĂ©cidĂ© de faire la logique de calcul des indicateurs non-additifs et la comparaison des pĂ©riodes prĂ©cĂ©dentes dans Tableau.
Ătape 1. Tout en direct, aucune modification des vitrines.
à cette étape, nous avons connecté Tableau aux vitrines existantes et décidé de voir comment le nombre de tickets serait calculé sur une année.
Résultat :
La rĂ©ponse Ă©tait dĂ©courageante : 20 minutes. La transmission des donnĂ©es via le rĂ©seau, une charge Ă©levĂ©e sur Tableau. Nous avons compris que la logique des indicateurs non-additifs devait ĂȘtre mise en Ćuvre sur HANA. Cela ne nous effrayait pas trop, nous avions dĂ©jĂ une expĂ©rience similaire avec BO et Analysis et savions construire des vitrines rapides sur HANA qui fournissent des indicateurs non-additifs correctement calculĂ©s. Il ne restait plus qu'Ă les adapter Ă Tableau.
Ătape 2. Nous optimisons les vitrines, aucune matĂ©rialisation, tout en temps rĂ©el.
Nous avons créé une nouvelle vitrine distincte qui gĂ©nĂšre Ă la volĂ©e les donnĂ©es requises pour TABLEAU. Dans l'ensemble, nous avons obtenu un bon rĂ©sultat, rĂ©duisant le temps de crĂ©ation de tous les indicateurs d'une semaine Ă 9-10 secondes. Nous nous attendions honnĂȘtement Ă ce qu'Ă l'ouverture initiale, le temps de rĂ©ponse du tableau de bord dans Tableau soit de 20 Ă 30 secondes, puis grĂące au cache entre 10 et 12 secondes, ce qui nous aurait convenu.
Résultat :
Premier ouverture des tableaux de bord : 4-5 minutes
Chaque clic : 3-4 minutes
Personne ne s'attendait à un tel ajout à l'efficacité de la vitrine.
Partie 2. Immersion dans Tableau
Ătape 1. Analyse des performances de Tableau et optimisation rapide
Nous avons commencĂ© Ă analyser Ă quoi Tableau consacre principalement son temps. Pour cela, il existe des outils assez performants, ce qui est bien sĂ»r un avantage pour Tableau. Le principal problĂšme que nous avons identifiĂ© rĂ©side dans des requĂȘtes SQL trĂšs complexes gĂ©nĂ©rĂ©es par Tableau. Celles-ci Ă©taient principalement liĂ©es Ă :
â la transposition des donnĂ©es. Ătant donnĂ© que Tableau ne dispose pas d'outils pour transposer des ensembles de donnĂ©es, nous avons dĂ» crĂ©er un tableau via un case pour construire la partie gauche du tableau de bord avec une vue dĂ©taillĂ©e de tous les KPI. La taille des requĂȘtes SQL dans la base de donnĂ©es atteignait 120 000 caractĂšres.

â la sĂ©lection de la pĂ©riode de temps. Une telle requĂȘte au niveau de la base de donnĂ©es prenait plus de temps Ă se compiler qu'Ă s'exĂ©cuter :

C'est-Ă -dire, le traitement de la requĂȘte 12 secondes + 5 secondes d'exĂ©cution.
Nous avons décidé de simplifier la logique de calcul cÎté Tableau et de transférer une autre partie des calculs vers la vitrine et le niveau de la base de données. Cela a donné de bons résultats.
D'abord, nous avons effectué la transposition à la volée, en le faisant via un full outer join à la derniÚre étape du calcul de la VIEW, selon cette approche décrite sur wiki et .

Nous avons donc créé un tableau de configuration â une matrice de transposition (21x21) et avons obtenu tous les indicateurs sous forme de lignes.
Avant :

Devenu:

La transposition de la base de donnĂ©es ne prend presque pas de temps. La requĂȘte pour tous les indicateurs de la semaine Ă©tait toujours exĂ©cutĂ©e en environ 10 secondes. Cependant, nous avons perdu en flexibilitĂ© pour la crĂ©ation de tableaux de bord sur un indicateur prĂ©cis, c'est-Ă -dire que pour la partie droite du tableau de bord, oĂč la dynamique et le dĂ©tail d'un indicateur spĂ©cifique sont prĂ©sentĂ©s, le tableau de bord s'exĂ©cutait auparavant en 1-3 secondes, car la requĂȘte ne portait que sur un indicateur, alors qu'Ă prĂ©sent la base de donnĂ©es sĂ©lectionne toujours tous les indicateurs et filtre le rĂ©sultat avant de le renvoyer Ă Tableau.
En conséquence, la vitesse de fonctionnement du tableau de bord a diminué presque de trois fois.
Résultat :
- 5 sec â parsing du tableau de bord, visualisations
- 15-20 sec â prĂ©paration Ă la compilation des requĂȘtes avec exĂ©cution des prĂ©calculs dans Tableau
- 35-45 sec â compilation des requĂȘtes SQL et exĂ©cution parallĂšle-sĂ©quentielle dans Hana
- 5 sec â traitement des rĂ©sultats, tri, recalcul des visualisations dans Tableau
- Bien sûr, de tels résultats ne satisfaisaient pas l'entreprise, et nous avons poursuivi l'optimisation.
Ătape 2. Minimum de logique dans Tableau, matĂ©rialisation complĂšte
Nous savions qu'il Ă©tait impossible de construire un tableau de bord avec un temps de rĂ©ponse de quelques secondes sur une vitrine qui fonctionne en 10 secondes, et nous avons envisagĂ© des options de matĂ©rialisation des donnĂ©es du cĂŽtĂ© de la base de donnĂ©es spĂ©cifiquement pour le tableau de bord requis. Mais nous avons Ă©tĂ© confrontĂ©s Ă un problĂšme global, dĂ©crit ci-dessus - des indicateurs non-additifs. Nous n'avons pas pu faire en sorte que lors de changements de filtres ou de dĂ©ploiements, Tableau puisse passer de maniĂšre flexible entre diffĂ©rentes vitrines et niveaux, prĂ©-calculĂ©s pour diffĂ©rentes hiĂ©rarchies de produits (dans l'exemple, trois requĂȘtes sans UTE, avec UTE1 et UTE2 gĂ©nĂšrent des rĂ©sultats diffĂ©rents). Par consĂ©quent, nous avons dĂ©cidĂ© de simplifier le tableau de bord, de renoncer Ă la hiĂ©rarchie des produits dans le tableau de bord et de voir Ă quelle vitesse il pourrait ĂȘtre dans une version simplifiĂ©e.
Ainsi, Ă cette derniĂšre Ă©tape, nous avons créé un stockage sĂ©parĂ© dans lequel nous avons accumulĂ©, sous forme transposĂ©e, tous les KPI. Du cĂŽtĂ© de la base de donnĂ©es, toute requĂȘte vers ce stockage s'exĂ©cute en 0,1 - 0,3 secondes. Dans le tableau de bord, nous avons obtenu les rĂ©sultats suivants :
PremiĂšre ouverture : 8-10 secondes
Chaque clic : 6-7 secondes
Le temps consacré par Tableau se compose de :
- 0,3 sec. â parsing du tableau de bord et compilation des requĂȘtes SQL
- 1,5-3 sec. â exĂ©cution des requĂȘtes SQL dans Hana pour les principales visualisations (lancĂ© en parallĂšle avec le p.1)
- 1,5-2 secondes â rendu, recalcul des visualisations
- 1,3 seconde â exĂ©cution de requĂȘtes SQL supplĂ©mentaires pour obtenir des valeurs pertinentes des filtres (marque, division, ville, magasin), analyse des rĂ©sultats
Pour résumer briÚvement
Nous avons apprécié l'outil Tableau en termes de visualisation. Lors de l'étape de conception, nous avons examiné différents éléments de visualisation et les avons tous trouvés dans les bibliothÚques, y compris des segmentations complexes à plusieurs niveaux et des cascades multi-drivers.
En intégrant des tableaux de bord avec des indicateurs clés de vente, nous avons rencontré des difficultés de performance que nous n'avons pas pu surmonter. Nous avons passé plus de deux mois à développer un tableau de bord fonctionnellement incomplet, dont la vitesse de réponse était à la limite du tolérable. Nous en avons tiré les conclusions suivantes :
- Tableau ne peut pas gĂ©rer de gros volumes de donnĂ©es. Si votre modĂšle de donnĂ©es d'origine contient plus de 10 Go de donnĂ©es (environ 200 millions de lignes x 50 colonnes), le tableau de bord ralentit sĂ©rieusement â de 10 secondes Ă plusieurs minutes par clic. Nous avons effectuĂ© des expĂ©riences avec une connexion en direct et des extractions. La vitesse de travail est comparable.
- Limitation lors de l'utilisation de plusieurs entrepĂŽts (ensembles de donnĂ©es). Il n'est pas possible d'indiquer les relations entre les ensembles de donnĂ©es avec des moyens standard. Si vous utilisez des solutions alternatives pour relier les ensembles de donnĂ©es, cela affectera considĂ©rablement la performance. Dans notre cas, nous avons envisagĂ© de matĂ©rialiser les donnĂ©es dans chaque dĂ©coupage de visualisation nĂ©cessaire et de faire des basculements sur ces ensembles de donnĂ©es matĂ©rialisĂ©s tout en conservant les filtres sĂ©lectionnĂ©s prĂ©cĂ©demment â cela s'est avĂ©rĂ© impossible Ă rĂ©aliser dans Tableau.
- Il n'est pas possible de crĂ©er des paramĂštres dynamiques dans Tableau. Vous ne pouvez pas remplir un paramĂštre utilisĂ© pour filtrer un ensemble de donnĂ©es dans une extraction ou lors d'une connexion en direct avec le rĂ©sultat d'une autre sĂ©lection de cet ensemble de donnĂ©es ou d'un autre rĂ©sultat de requĂȘte SQL, seulement une saisie utilisateur native ou une constante.
- Limitations liées à la création de tableaux de bord avec des éléments OLAP | Tableaux croisés dynamiques.
Dans MSTR, SAP SAC, SAP Analysis, lorsque vous ajoutez un ensemble de donnĂ©es Ă un rapport, tous les objets qui en dĂ©coulent sont liĂ©s entre eux par dĂ©faut. Ce n'est pas le cas dans Tableau, oĂč les liens doivent ĂȘtre configurĂ©s manuellement. Cela offre probablement plus de flexibilitĂ©, mais pour tous nos tableaux de bord, c'est une exigence obligatoire pour les Ă©lĂ©ments â d'oĂč des coĂ»ts supplĂ©mentaires en main-d'Ćuvre. De plus, si vous crĂ©ez des filtres liĂ©s pour que, par exemple, lors de la filtration d'une rĂ©gion, la liste des villes soit limitĂ©e aux villes de cette rĂ©gion, vous vous retrouvez immĂ©diatement avec des requĂȘtes consĂ©cutives Ă la base de donnĂ©es ou Ă l'extrait, ce qui ralentit considĂ©rablement le tableau de bord. - Restrictions dans les fonctions. Ni sur l'extrait, ni SURTOUT sur l'ensemble de donnĂ©es issu de Live Connect, il n'est pas possible de procĂ©der Ă des transformations massives. Cela peut ĂȘtre fait via Tableau Prep, mais cela reprĂ©sente des coĂ»ts supplĂ©mentaires en main-d'Ćuvre et un outil de plus qu'il faut apprendre et maintenir. Par exemple, vous ne pouvez pas transposer des donnĂ©es, ni effectuer un join dessus elles-mĂȘmes. Cela se limite Ă des transformations sur des colonnes ou champs individuels, qui doivent ĂȘtre sĂ©lectionnĂ©s via case ou if, ce qui engendre des requĂȘtes SQL trĂšs complexes, oĂč la base passe le gros de son temps Ă compiler le texte de la requĂȘte. Ces rigiditĂ©s de l'outil ont dĂ» ĂȘtre rĂ©solues au niveau de la vitrine, ce qui entraĂźne une complexitĂ© accrue du stockage, des charges supplĂ©mentaires et des transformations.
Nous n'avons pas tiré un trait sur Tableau. Mais en tant qu'outil capable de construire des tableaux de bord industriels et comme moyen de remplacer et de numériser tout le systÚme de reporting d'entreprise, Tableau n'est pas considéré.
Nous sommes actuellement en train de développer un tableau de bord similaire sur un autre outil et essayons parallÚlement de revoir l'architecture du tableau de bord dans Tableau pour encore plus le simplifier. Si la communauté est intéressée, nous partagerons les résultats.
Nous attendons Ă©galement vos idĂ©es ou conseils sur la maniĂšre de construire des tableaux de bord rapides dans Tableau avec de tels volumes de donnĂ©es, car nous avons aussi un site oĂč les donnĂ©es sont bien plus nombreuses qu'en vente au dĂ©tail.
Source : habr.com
