{"id":55144,"date":"2020-01-13T00:00:00","date_gmt":"2020-01-12T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/tableau-v-roznitse-realno"},"modified":"2020-02-18T14:03:13","modified_gmt":"2020-02-18T11:03:13","slug":"tableau-v-roznitse-realno","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/news\/tableau-v-roznitse-realno","title":{"rendered":"Tableau dans le commerce de d\u00e9tail, vraiment ?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b>Le temps de reporting dans Excel s'\u00e9chappe rapidement \u2014 la tendance vers des outils pratiques de pr\u00e9sentation et d'analyse des informations est perceptible dans tous les domaines. Nous avons longtemps discut\u00e9 de la num\u00e9risation de la construction de rapports et avons choisi le syst\u00e8me de visualisation et d'analyse en libre-service Tableau. Alexandre Bezugly, responsable du d\u00e9partement des solutions analytiques et des rapports du groupe \u00ab M.Video-Eldorado \u00bb, a partag\u00e9 son exp\u00e9rience et les r\u00e9sultats de la mise en place d'un tableau de bord op\u00e9rationnel.<\/b><\/p>\n<p>Je dirai tout de suite que tout ce qui avait \u00e9t\u00e9 pr\u00e9vu n'a pas pu \u00eatre r\u00e9alis\u00e9, mais l'exp\u00e9rience \u00e9tait int\u00e9ressante, j'esp\u00e8re qu'elle sera utile pour vous aussi. Et si quelqu'un a des id\u00e9es sur la fa\u00e7on de faire mieux, je serais tr\u00e8s reconnaissant pour les conseils et les id\u00e9es.<\/p>\n<p><img decoding=\"async\" alt=\"Tableau dans le commerce de d\u00e9tail, vraiment ?\" src=\"\/wp-content\/uploads\/2020\/01\/81c41899e9b3acf1858a4faa627c121b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCi-dessous, sur ce \u00e0 quoi nous avons fait face et ce que nous avons appris.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Par quoi nous avons commenc\u00e9<\/h4>\n<p>\nChez \u00ab M.Video-Eldorado \u00bb, il existe un mod\u00e8le de donn\u00e9es bien \u00e9labor\u00e9 : des informations structur\u00e9es avec la profondeur de stockage requise et un grand nombre de rapports \u00e0 format fixe (voir plus en d\u00e9tail <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mvideo\/blog\/462015\/\">dans cet article<\/a><\/noindex>). Les analystes en font soit des tableaux crois\u00e9s dynamiques ou des envois format\u00e9s dans Excel, soit de belles pr\u00e9sentations dans PowerPoint pour les utilisateurs finaux.<\/p>\n<p>Il y a environ deux ans, au lieu de rapports \u00e0 format fixe, nous avons commenc\u00e9 \u00e0 cr\u00e9er des rapports analytiques dans SAP Analysis (un compl\u00e9ment \u00e0 Excel, en fait \u2014 un tableau crois\u00e9 dynamique sur une machine OLAP). Mais cet outil n'a pas pu r\u00e9pondre aux besoins de tous les utilisateurs, la plupart ont continu\u00e9 \u00e0 utiliser les informations trait\u00e9es suppl\u00e9mentaires par les analystes.<\/p>\n<p>Nos utilisateurs finaux se divisent en trois cat\u00e9gories :<\/p>\n<p><b>La direction sup\u00e9rieure<\/b>. Elle demande des informations pr\u00e9sent\u00e9es de mani\u00e8re claire et facilement compr\u00e9hensible.<\/p>\n<p><b>La direction interm\u00e9diaire<\/b>, utilisateurs avanc\u00e9s. Ils s'int\u00e9ressent \u00e0 l'exploration des donn\u00e9es et sont capables de cr\u00e9er des rapports de mani\u00e8re autonome si les outils sont disponibles. Ce sont eux qui sont devenus les utilisateurs cl\u00e9s des rapports analytiques dans SAP Analysis.<\/p>\n<p><b>Les utilisateurs de base<\/b>. Ils ne sont pas int\u00e9ress\u00e9s par l'analyse autonome des donn\u00e9es, utilisent des rapports avec une libert\u00e9 d'action limit\u00e9e, sous forme d'envois et de tableaux crois\u00e9s dans Excel.<\/p>\n<p>Notre id\u00e9e \u00e9tait de r\u00e9pondre aux besoins de tous les utilisateurs et de leur fournir un outil unique et compact. Nous avons commenc\u00e9 avec la haute direction. Ils avaient besoin de panneaux pratiques pour analyser les principaux r\u00e9sultats commerciaux. Ainsi, nous avons d\u00e9marr\u00e9 avec Tableau et avons d'abord choisi deux axes : les indicateurs de vente au d\u00e9tail et en ligne avec une profondeur et une largeur d'analyse limit\u00e9es, qui couvriraient environ 80 % des donn\u00e9es demand\u00e9es par la direction.<\/p>\n<p>\u00c9tant donn\u00e9 que les utilisateurs des tableaux de bord \u00e9taient la haute direction, un KPI suppl\u00e9mentaire du produit est apparu : la rapidit\u00e9 de r\u00e9ponse. Personne ne va attendre 20 \u00e0 30 secondes pour que les donn\u00e9es se mettent \u00e0 jour. La navigation devait se faire en 4 \u00e0 5 secondes, et id\u00e9alement instantan\u00e9ment. Malheureusement, nous n'avons pas r\u00e9ussi \u00e0 atteindre cet objectif.<\/p>\n<p>Voici \u00e0 quoi ressemblait la maquette de notre tableau de bord principal :<\/p>\n<p><img decoding=\"async\" alt=\"Tableau dans le commerce de d\u00e9tail, vraiment ?\" src=\"\/wp-content\/uploads\/2020\/01\/a7a028feee6542dfbc1fd3c2feeaa3de.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL'id\u00e9e cl\u00e9 \u00e9tait de rassembler les principaux KPI moteurs, qui en fin de compte en comprenaient 19, \u00e0 gauche et de repr\u00e9senter leur dynamique ainsi que leur r\u00e9partition selon les principaux attributs \u00e0 droite. La t\u00e2che semble simple, la visualisation est logique et claire, jusqu'\u00e0 ce que l'on se plonge dans les d\u00e9tails.<\/p>\n<h2>D\u00e9tail 1. Volume des donn\u00e9es<\/h2>\n<p>\nLa table principale des ventes sur l'ann\u00e9e compte environ 300 millions de lignes. Comme il est n\u00e9cessaire de refl\u00e9ter \u00e9galement la dynamique par rapport \u00e0 l'ann\u00e9e pr\u00e9c\u00e9dente et l'ann\u00e9e d'avant, le volume des donn\u00e9es concernant les ventes r\u00e9elles s'\u00e9l\u00e8ve \u00e0 environ 1 milliard de lignes. De plus, des informations sur les donn\u00e9es pr\u00e9visionnelles et un bloc de ventes en ligne sont conserv\u00e9es s\u00e9par\u00e9ment. Par cons\u00e9quent, m\u00eame si nous avons utilis\u00e9 une base de donn\u00e9es in-memory en colonnes SAP HANA, la vitesse de traitement de la requ\u00eate pour obtenir tous les indicateurs sur une semaine depuis les entrep\u00f4ts actuels en temps r\u00e9el \u00e9tait d'environ 15 \u00e0 20 secondes. La solution de ce probl\u00e8me semble \u00e9vidente : une mat\u00e9rialisation suppl\u00e9mentaire des donn\u00e9es. Mais cela comporte aussi des pi\u00e8ges, que nous aborderons ci-dessous.<\/p>\n<h2>D\u00e9tail 2. Indicateurs non additives<\/h2>\n<p>\nNos nombreux KPI sont li\u00e9s au nombre de re\u00e7us. Cet indicateur repr\u00e9sente un COUNT DISTINCT du nombre de lignes (en-t\u00eates des re\u00e7us) et montre diff\u00e9rentes sommes selon les attributs s\u00e9lectionn\u00e9s. Voici un exemple de la mani\u00e8re dont cet indicateur et ses d\u00e9riv\u00e9s doivent \u00eatre calcul\u00e9s :<\/p>\n<p><img decoding=\"async\" alt=\"Tableau dans le commerce de d\u00e9tail, vraiment ?\" src=\"\/wp-content\/uploads\/2020\/01\/0a6d676f0a5c2b779a5e7892b1f54929.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPour l'exactitude des calculs, il est possible de :<\/p>\n<ul>\n<li>Calculer de tels indicateurs \u00e0 la vol\u00e9e dans l'entrep\u00f4t ;\n<\/li>\n<li>Calculer sur l'ensemble des donn\u00e9es dans Tableau, c'est-\u00e0-dire en demandant \u00e0 Tableau de fournir toutes les donn\u00e9es en fonction des filtres s\u00e9lectionn\u00e9s avec la granularit\u00e9 des lignes de re\u00e7us ;\n<\/li>\n<li>Cr\u00e9er une vitrine mat\u00e9rialis\u00e9e qui calculera tous les indicateurs pour toutes les options d'\u00e9chantillonnage, donnant des r\u00e9sultats non-additifs diff\u00e9rents.\n<\/li>\n<\/ul>\n<p>\nIl est \u00e9vident que dans l'exemple, UTE1 et UTE2 sont des attributs du mat\u00e9riau repr\u00e9sentant la hi\u00e9rarchie des produits. Ce n'est pas une chose statique, elle g\u00e8re l'int\u00e9rieur de l'entreprise, car diff\u00e9rentes cat\u00e9gories de produits sont g\u00e9r\u00e9es par diff\u00e9rents responsables. Nous avons effectu\u00e9 de nombreuses r\u00e9visions globales de cette hi\u00e9rarchie, lorsque tous les niveaux \u00e9taient modifi\u00e9s, les interconnexions r\u00e9examin\u00e9es, ainsi que des modifications ponctuelles constantes, lorsque l'un des groupes passe d'un n\u0153ud \u00e0 un autre. Dans les rapports ordinaires, tout cela est calcul\u00e9 en temps r\u00e9el \u00e0 partir des attributs du mat\u00e9riau. Dans le cas de la mat\u00e9rialisation de ces donn\u00e9es, il est n\u00e9cessaire de d\u00e9velopper un m\u00e9canisme de suivi de telles modifications et un rechargement automatique des donn\u00e9es historiques. C'est une t\u00e2che assez non triviale.<\/p>\n<h2>D\u00e9tail 3. Comparaison des donn\u00e9es <\/h2>\n<p>\nCe point est similaire au pr\u00e9c\u00e9dent. L'id\u00e9e est qu'au sein de l'entreprise, lors de l'analyse, il est courant de former plusieurs niveaux de comparaison avec la p\u00e9riode pr\u00e9c\u00e9dente :<\/p>\n<p><i>Comparaison avec la p\u00e9riode pr\u00e9c\u00e9dente (jour apr\u00e8s jour, semaine apr\u00e8s semaine, mois apr\u00e8s mois)<\/i><\/p>\n<p>Dans cette comparaison, il est suppos\u00e9 qu'en fonction de la p\u00e9riode choisie par l'utilisateur (par exemple, la 33e semaine de l'ann\u00e9e), nous devons montrer la dynamique par rapport \u00e0 la 32e semaine. Si nous avions choisi les donn\u00e9es pour un mois, par exemple mai, cette comparaison montrerait la dynamique par rapport \u00e0 avril.<\/p>\n<p><i>Comparaison avec l'ann\u00e9e pr\u00e9c\u00e9dente<\/i><\/p>\n<p>Le point principal ici est que lors de la comparaison par jours et par semaines, vous ne prenez pas le m\u00eame jour de l'ann\u00e9e pr\u00e9c\u00e9dente, c'est-\u00e0-dire que vous ne pouvez pas simplement soustraire un an de l'ann\u00e9e 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\u00eame jour du calendrier de l'ann\u00e9e pr\u00e9c\u00e9dente. Il y a aussi des nuances avec les ann\u00e9es bissextiles. Dans les bases de donn\u00e9es d'origine, toutes les informations sont r\u00e9parties par jour, il n'y a pas de champs s\u00e9par\u00e9s pour les semaines, les mois ou les ann\u00e9es. Par cons\u00e9quent, pour obtenir un aper\u00e7u analytique complet dans le tableau de bord, il est n\u00e9cessaire de calculer non pas une p\u00e9riode, par exemple une semaine, mais 4 semaines, puis de comparer ces donn\u00e9es, de refl\u00e9ter la dynamique et les d\u00e9viations. Ainsi, cette logique de formation de comparaison dynamique peut \u00e9galement \u00eatre mise en \u0153uvre soit dans Tableau, soit du c\u00f4t\u00e9 de la vitrine. Oui, et nous connaissions bien s\u00fbr ces d\u00e9tails et y avons r\u00e9fl\u00e9chi d\u00e8s la phase de conception, mais pr\u00e9voir leur impact sur les performances du tableau de bord final \u00e9tait difficile.<\/p>\n<p>Lors de l'impl\u00e9mentation du tableau de bord, nous avons suivi un long parcours Agile. Notre objectif \u00e9tait de fournir le plus rapidement possible un outil fonctionnel \u00e0 tester avec les donn\u00e9es n\u00e9cessaires. Nous avons donc progress\u00e9 par sprints en nous concentrant sur la minimisation des travaux du c\u00f4t\u00e9 des bases de donn\u00e9es actuelles.<\/p>\n<h2>Partie 1. La foi en Tableau<\/h2>\n<p>\nPour simplifier le soutien informatique et faciliter la mise en \u0153uvre rapide des modifications, nous avons d\u00e9cid\u00e9 de faire la logique de calcul des indicateurs non-additifs et la comparaison des p\u00e9riodes pr\u00e9c\u00e9dentes dans Tableau.<\/p>\n<h3>\u00c9tape 1. Tout en direct, aucune modification des vitrines.<\/h3>\n<p>\n\u00c0 cette \u00e9tape, nous avons connect\u00e9 Tableau aux vitrines existantes et d\u00e9cid\u00e9 de voir comment le nombre de tickets serait calcul\u00e9 sur une ann\u00e9e.<\/p>\n<p><b>R\u00e9sultat :<\/b><\/p>\n<p>La r\u00e9ponse \u00e9tait d\u00e9courageante : 20 minutes. La transmission des donn\u00e9es via le r\u00e9seau, une charge \u00e9lev\u00e9e sur Tableau. Nous avons compris que la logique des indicateurs non-additifs devait \u00eatre mise en \u0153uvre sur HANA. Cela ne nous effrayait pas trop, nous avions d\u00e9j\u00e0 une exp\u00e9rience similaire avec BO et Analysis et savions construire des vitrines rapides sur HANA qui fournissent des indicateurs non-additifs correctement calcul\u00e9s. Il ne restait plus qu'\u00e0 les adapter \u00e0 Tableau.<\/p>\n<h3>\u00c9tape 2. Nous optimisons les vitrines, aucune mat\u00e9rialisation, tout en temps r\u00e9el.<\/h3>\n<p>\nNous avons cr\u00e9\u00e9 une nouvelle vitrine distincte qui g\u00e9n\u00e8re \u00e0 la vol\u00e9e les donn\u00e9es requises pour TABLEAU. Dans l'ensemble, nous avons obtenu un bon r\u00e9sultat, r\u00e9duisant le temps de cr\u00e9ation de tous les indicateurs d'une semaine \u00e0 9-10 secondes. Nous nous attendions honn\u00eatement \u00e0 ce qu'\u00e0 l'ouverture initiale, le temps de r\u00e9ponse du tableau de bord dans Tableau soit de 20 \u00e0 30 secondes, puis gr\u00e2ce au cache entre 10 et 12 secondes, ce qui nous aurait convenu.<\/p>\n<p><b>R\u00e9sultat :<\/b><\/p>\n<p>Premier ouverture des tableaux de bord : 4-5 minutes<br \/>\nChaque clic : 3-4 minutes<br \/>\nPersonne ne s'attendait \u00e0 un tel ajout \u00e0 l'efficacit\u00e9 de la vitrine.<\/p>\n<h2>Partie 2. Immersion dans Tableau<\/h2>\n<p><\/p>\n<h3>\u00c9tape 1. Analyse des performances de Tableau et optimisation rapide<\/h3>\n<p>\nNous avons commenc\u00e9 \u00e0 analyser \u00e0 quoi Tableau consacre principalement son temps. Pour cela, il existe des outils assez performants, ce qui est bien s\u00fbr un avantage pour Tableau. Le principal probl\u00e8me que nous avons identifi\u00e9 r\u00e9side dans des requ\u00eates SQL tr\u00e8s complexes g\u00e9n\u00e9r\u00e9es par Tableau. Celles-ci \u00e9taient principalement li\u00e9es \u00e0 :<\/p>\n<p> \u2014 la transposition des donn\u00e9es. \u00c9tant donn\u00e9 que Tableau ne dispose pas d'outils pour transposer des ensembles de donn\u00e9es, nous avons d\u00fb cr\u00e9er un tableau via un case pour construire la partie gauche du tableau de bord avec une vue d\u00e9taill\u00e9e de tous les KPI. La taille des requ\u00eates SQL dans la base de donn\u00e9es atteignait 120 000 caract\u00e8res.<\/p>\n<p><img decoding=\"async\" alt=\"Tableau dans le commerce de d\u00e9tail, vraiment ?\" src=\"\/wp-content\/uploads\/2020\/01\/8fc4d99017ddd604bbabb5ea0a19b38d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n \u2014 la s\u00e9lection de la p\u00e9riode de temps. Une telle requ\u00eate au niveau de la base de donn\u00e9es prenait plus de temps \u00e0 se compiler qu'\u00e0 s'ex\u00e9cuter :<\/p>\n<p><img decoding=\"async\" alt=\"Tableau dans le commerce de d\u00e9tail, vraiment ?\" src=\"\/wp-content\/uploads\/2020\/01\/a9b9cc6ddd6b03c643935d070532728e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'est-\u00e0-dire, le traitement de la requ\u00eate 12 secondes + 5 secondes d'ex\u00e9cution.<\/p>\n<p>Nous avons d\u00e9cid\u00e9 de simplifier la logique de calcul c\u00f4t\u00e9 Tableau et de transf\u00e9rer une autre partie des calculs vers la vitrine et le niveau de la base de donn\u00e9es. Cela a donn\u00e9 de bons r\u00e9sultats.<\/p>\n<p>D'abord, nous avons effectu\u00e9 la transposition \u00e0 la vol\u00e9e, en le faisant via un full outer join \u00e0 la derni\u00e8re \u00e9tape du calcul de la VIEW, selon cette approche d\u00e9crite sur wiki <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/Transpose\">Transpose \u2014 Wikip\u00e9dia, l'encyclop\u00e9die libre<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/Elementary_matrix#Row-addition_transformations\">Matrice \u00e9l\u00e9mentaire \u2014 Wikip\u00e9dia, l'encyclop\u00e9die libre<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Tableau dans le commerce de d\u00e9tail, vraiment ?\" src=\"\/wp-content\/uploads\/2020\/01\/5259995831dc8ae379a34bfe84e52daa.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNous avons donc cr\u00e9\u00e9 un tableau de configuration \u2013 une matrice de transposition (21x21) et avons obtenu tous les indicateurs sous forme de lignes.<\/p>\n<p>Avant :<br \/>\n<img decoding=\"async\" alt=\"Tableau dans le commerce de d\u00e9tail, vraiment ?\" src=\"\/wp-content\/uploads\/2020\/01\/9382ee65a1482cc137a52b5f80c39eeb.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDevenu:<br \/>\n<img decoding=\"async\" alt=\"Tableau dans le commerce de d\u00e9tail, vraiment ?\" src=\"\/wp-content\/uploads\/2020\/01\/1d6653ec427ce0621b441943f589d860.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa transposition de la base de donn\u00e9es ne prend presque pas de temps. La requ\u00eate pour tous les indicateurs de la semaine \u00e9tait toujours ex\u00e9cut\u00e9e en environ 10 secondes. Cependant, nous avons perdu en flexibilit\u00e9 pour la cr\u00e9ation de tableaux de bord sur un indicateur pr\u00e9cis, c'est-\u00e0-dire que pour la partie droite du tableau de bord, o\u00f9 la dynamique et le d\u00e9tail d'un indicateur sp\u00e9cifique sont pr\u00e9sent\u00e9s, le tableau de bord s'ex\u00e9cutait auparavant en 1-3 secondes, car la requ\u00eate ne portait que sur un indicateur, alors qu'\u00e0 pr\u00e9sent la base de donn\u00e9es s\u00e9lectionne toujours tous les indicateurs et filtre le r\u00e9sultat avant de le renvoyer \u00e0 Tableau.<\/p>\n<p>En cons\u00e9quence, la vitesse de fonctionnement du tableau de bord a diminu\u00e9 presque de trois fois.<\/p>\n<p><b>R\u00e9sultat :<\/b><\/p>\n<ol>\n<li>5 sec \u2014 parsing du tableau de bord, visualisations<\/li>\n<li> 15-20 sec \u2014 pr\u00e9paration \u00e0 la compilation des requ\u00eates avec ex\u00e9cution des pr\u00e9calculs dans Tableau<\/li>\n<li> 35-45 sec \u2014 compilation des requ\u00eates SQL et ex\u00e9cution parall\u00e8le-s\u00e9quentielle dans Hana<\/li>\n<li> 5 sec \u2014 traitement des r\u00e9sultats, tri, recalcul des visualisations dans Tableau<\/li>\n<li>Bien s\u00fbr, de tels r\u00e9sultats ne satisfaisaient pas l'entreprise, et nous avons poursuivi l'optimisation.<\/li>\n<\/ol>\n<p><\/p>\n<h3>\u00c9tape 2. Minimum de logique dans Tableau, mat\u00e9rialisation compl\u00e8te<\/h3>\n<p>\nNous savions qu'il \u00e9tait impossible de construire un tableau de bord avec un temps de r\u00e9ponse de quelques secondes sur une vitrine qui fonctionne en 10 secondes, et nous avons envisag\u00e9 des options de mat\u00e9rialisation des donn\u00e9es du c\u00f4t\u00e9 de la base de donn\u00e9es sp\u00e9cifiquement pour le tableau de bord requis. Mais nous avons \u00e9t\u00e9 confront\u00e9s \u00e0 un probl\u00e8me global, d\u00e9crit ci-dessus - des indicateurs non-additifs. Nous n'avons pas pu faire en sorte que lors de changements de filtres ou de d\u00e9ploiements, Tableau puisse passer de mani\u00e8re flexible entre diff\u00e9rentes vitrines et niveaux, pr\u00e9-calcul\u00e9s pour diff\u00e9rentes hi\u00e9rarchies de produits (dans l'exemple, trois requ\u00eates sans UTE, avec UTE1 et UTE2 g\u00e9n\u00e8rent des r\u00e9sultats diff\u00e9rents). Par cons\u00e9quent, nous avons d\u00e9cid\u00e9 de simplifier le tableau de bord, de renoncer \u00e0 la hi\u00e9rarchie des produits dans le tableau de bord et de voir \u00e0 quelle vitesse il pourrait \u00eatre dans une version simplifi\u00e9e.<\/p>\n<p>Ainsi, \u00e0 cette derni\u00e8re \u00e9tape, nous avons cr\u00e9\u00e9 un stockage s\u00e9par\u00e9 dans lequel nous avons accumul\u00e9, sous forme transpos\u00e9e, tous les KPI. Du c\u00f4t\u00e9 de la base de donn\u00e9es, toute requ\u00eate vers ce stockage s'ex\u00e9cute en 0,1 - 0,3 secondes. Dans le tableau de bord, nous avons obtenu les r\u00e9sultats suivants :<\/p>\n<p>Premi\u00e8re ouverture : 8-10 secondes<br \/>\nChaque clic : 6-7 secondes<\/p>\n<p>Le temps consacr\u00e9 par Tableau se compose de :<\/p>\n<ol>\n<li>0,3 sec. \u2014 parsing du tableau de bord et compilation des requ\u00eates SQL\n<\/li>\n<li>1,5-3 sec. \u2014 ex\u00e9cution des requ\u00eates SQL dans Hana pour les principales visualisations (lanc\u00e9 en parall\u00e8le avec le p.1)\n<\/li>\n<li>1,5-2 secondes \u2014 rendu, recalcul des visualisations\n<\/li>\n<li>1,3 seconde \u2014 ex\u00e9cution de requ\u00eates SQL suppl\u00e9mentaires pour obtenir des valeurs pertinentes des filtres (marque, division, ville, magasin), analyse des r\u00e9sultats\n<\/li>\n<\/ol>\n<p><\/p>\n<h3>Pour r\u00e9sumer bri\u00e8vement<\/h3>\n<p>\nNous avons appr\u00e9ci\u00e9 l'outil Tableau en termes de visualisation. Lors de l'\u00e9tape de conception, nous avons examin\u00e9 diff\u00e9rents \u00e9l\u00e9ments de visualisation et les avons tous trouv\u00e9s dans les biblioth\u00e8ques, y compris des segmentations complexes \u00e0 plusieurs niveaux et des cascades multi-drivers.<\/p>\n<p>En int\u00e9grant des tableaux de bord avec des indicateurs cl\u00e9s de vente, nous avons rencontr\u00e9 des difficult\u00e9s de performance que nous n'avons pas pu surmonter. Nous avons pass\u00e9 plus de deux mois \u00e0 d\u00e9velopper un tableau de bord fonctionnellement incomplet, dont la vitesse de r\u00e9ponse \u00e9tait \u00e0 la limite du tol\u00e9rable. Nous en avons tir\u00e9 les conclusions suivantes :<\/p>\n<ol>\n<li>Tableau ne peut pas travailler avec de gros volumes de donn\u00e9es. Si votre mod\u00e8le de donn\u00e9es original contient plus de 10 Go de donn\u00e9es (environ 200 millions x 50 lignes), le tableau de bord se ralentit consid\u00e9rablement - de 10 secondes \u00e0 plusieurs minutes par clic. Nous avons exp\u00e9riment\u00e9 \u00e0 la fois en connexion directe et avec un extrait. La vitesse de fonctionnement est comparable.\n<\/li>\n<li>Limitation lors de l'utilisation de plusieurs entrep\u00f4ts (ensembles de donn\u00e9es). Il n'est pas possible d'indiquer les relations entre les ensembles de donn\u00e9es avec des moyens standard. Si vous utilisez des solutions alternatives pour relier les ensembles de donn\u00e9es, cela affectera consid\u00e9rablement la performance. Dans notre cas, nous avons envisag\u00e9 de mat\u00e9rialiser les donn\u00e9es dans chaque d\u00e9coupage de visualisation n\u00e9cessaire et de faire des basculements sur ces ensembles de donn\u00e9es mat\u00e9rialis\u00e9s tout en conservant les filtres s\u00e9lectionn\u00e9s pr\u00e9c\u00e9demment \u2014 cela s'est av\u00e9r\u00e9 impossible \u00e0 r\u00e9aliser dans Tableau.\n<\/li>\n<li>Il n'est pas possible de cr\u00e9er des param\u00e8tres dynamiques dans Tableau. Vous ne pouvez pas remplir un param\u00e8tre utilis\u00e9 pour filtrer un ensemble de donn\u00e9es dans une extraction ou lors d'une connexion en direct avec le r\u00e9sultat d'une autre s\u00e9lection de cet ensemble de donn\u00e9es ou d'un autre r\u00e9sultat de requ\u00eate SQL, seulement une saisie utilisateur native ou une constante.\n<\/li>\n<li>Limitations li\u00e9es \u00e0 la cr\u00e9ation de tableaux de bord avec des \u00e9l\u00e9ments OLAP | Tableaux crois\u00e9s dynamiques. <br \/>\nDans MSTR, SAP SAC, SAP Analysis, lorsque vous ajoutez un ensemble de donn\u00e9es \u00e0 un rapport, tous les objets qui en d\u00e9coulent sont li\u00e9s entre eux par d\u00e9faut. Ce n'est pas le cas dans Tableau, o\u00f9 les liens doivent \u00eatre configur\u00e9s manuellement. Cela offre probablement plus de flexibilit\u00e9, mais pour tous nos tableaux de bord, c'est une exigence obligatoire pour les \u00e9l\u00e9ments \u2014 d'o\u00f9 des co\u00fbts suppl\u00e9mentaires en main-d'\u0153uvre. De plus, si vous cr\u00e9ez des filtres li\u00e9s pour que, par exemple, lors de la filtration d'une r\u00e9gion, la liste des villes soit limit\u00e9e aux villes de cette r\u00e9gion, vous vous retrouvez imm\u00e9diatement avec des requ\u00eates cons\u00e9cutives \u00e0 la base de donn\u00e9es ou \u00e0 l'extrait, ce qui ralentit consid\u00e9rablement le tableau de bord.<\/li>\n<li>Restrictions dans les fonctions. Ni sur l'extrait, ni SURTOUT sur l'ensemble de donn\u00e9es issu de Live Connect, il n'est pas possible de proc\u00e9der \u00e0 des transformations massives. Cela peut \u00eatre fait via Tableau Prep, mais cela repr\u00e9sente des co\u00fbts suppl\u00e9mentaires en main-d'\u0153uvre et un outil de plus qu'il faut apprendre et maintenir. Par exemple, vous ne pouvez pas transposer des donn\u00e9es, ni effectuer un join dessus elles-m\u00eames. Cela se limite \u00e0 des transformations sur des colonnes ou champs individuels, qui doivent \u00eatre s\u00e9lectionn\u00e9s via case ou if, ce qui engendre des requ\u00eates SQL tr\u00e8s complexes, o\u00f9 la base passe le gros de son temps \u00e0 compiler le texte de la requ\u00eate. Ces rigidit\u00e9s de l'outil ont d\u00fb \u00eatre r\u00e9solues au niveau de la vitrine, ce qui entra\u00eene une complexit\u00e9 accrue du stockage, des charges suppl\u00e9mentaires et des transformations.\n<\/li>\n<\/ol>\n<p>\nNous n'avons pas tir\u00e9 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\u00e9riser tout le syst\u00e8me de reporting d'entreprise, Tableau n'est pas consid\u00e9r\u00e9.<\/p>\n<p>Nous sommes actuellement en train de d\u00e9velopper un tableau de bord similaire sur un autre outil et essayons parall\u00e8lement de revoir l'architecture du tableau de bord dans Tableau pour encore plus le simplifier. Si la communaut\u00e9 est int\u00e9ress\u00e9e, nous partagerons les r\u00e9sultats.<\/p>\n<p>Nous attendons \u00e9galement vos id\u00e9es ou conseils sur la mani\u00e8re de construire des tableaux de bord rapides dans Tableau avec de tels volumes de donn\u00e9es, car nous avons aussi un site o\u00f9 les donn\u00e9es sont bien plus nombreuses qu'en vente au d\u00e9tail.<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mvideo\/blog\/483656\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0447\u0451\u0442\u043d\u043e\u0441\u0442\u0438 \u0432 Excel \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u2014 \u0442\u0440\u0435\u043d\u0434 \u043d\u0430 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043d \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0444\u0435\u0440\u0430\u0445. \u041c\u044b \u0434\u0430\u0432\u043d\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 self-service \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 Tableau. \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0411\u0435\u0437\u0443\u0433\u043b\u044b\u0439, \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043e\u0442\u0434\u0435\u043b\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u0447\u0451\u0442\u043d\u043e\u0441\u0442\u0438 \u0413\u0440\u0443\u043f\u043f\u044b \u00ab\u041c.\u0412\u0438\u0434\u0435\u043e-\u042d\u043b\u044c\u0434\u043e\u0440\u0430\u0434\u043e\u00bb, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043e\u0431 \u043e\u043f\u044b\u0442\u0435 \u0438 \u0438\u0442\u043e\u0433\u0430\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0431\u043e\u0435\u0432\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430. \u0421\u043a\u0430\u0436\u0443 \u0441\u0440\u0430\u0437\u0443, \u043d\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-55144","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0447\u0451\u0442\u043d\u043e\u0441\u0442\u0438 \u0432 Excel \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u2014 \u0442\u0440\u0435\u043d\u0434 \u043d\u0430 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043d \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0444\u0435\u0440\u0430\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/news\/tableau-v-roznitse-realno\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Tableau \u0432 \u0440\u043e\u0437\u043d\u0438\u0446\u0435, \u0440\u0435\u0430\u043b\u044c\u043d\u043e? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0447\u0451\u0442\u043d\u043e\u0441\u0442\u0438 \u0432 Excel \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u2014 \u0442\u0440\u0435\u043d\u0434 \u043d\u0430 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043d \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0444\u0435\u0440\u0430\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/news\/tableau-v-roznitse-realno\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-12T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:13+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Tableau en vente au d\u00e9tail, est-ce possible ? | ProHoster","description":"Le temps de reporting sur Excel dispara\u00eet rapidement \u2014 la tendance vers des outils pratiques de pr\u00e9sentation et d'analyse de l'information est \u00e9vidente dans tous les domaines.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/tableau-v-roznitse-realno","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Tableau \u0432 \u0440\u043e\u0437\u043d\u0438\u0446\u0435, \u0440\u0435\u0430\u043b\u044c\u043d\u043e? | ProHoster","og:description":"\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0447\u0451\u0442\u043d\u043e\u0441\u0442\u0438 \u0432 Excel \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u2014 \u0442\u0440\u0435\u043d\u0434 \u043d\u0430 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043d \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0444\u0435\u0440\u0430\u0445.","og:url":"https:\/\/prohoster.info\/fr\/blog\/news\/tableau-v-roznitse-realno","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-12T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:13+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55144","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:50:02","updated":"2022-10-05 23:10:07","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/55144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=55144"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/55144\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=55144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=55144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=55144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}