{"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\/es\/blog\/news\/tableau-v-roznitse-realno","title":{"rendered":"\u00bfTableau en retail, de verdad?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b>El tiempo de informes en Excel est\u00e1 desapareciendo r\u00e1pidamente; se observa una tendencia hacia herramientas c\u00f3modas para la presentaci\u00f3n y an\u00e1lisis de informaci\u00f3n en todos los campos. Hemos estado discutiendo durante mucho tiempo la digitalizaci\u00f3n de la creaci\u00f3n de informes y elegimos el sistema de visualizaci\u00f3n y an\u00e1lisis autogestionado Tableau. Alexander Bezugly, jefe del departamento de soluciones anal\u00edticas e informes del Grupo \"M.Video-Eldorado\", comparti\u00f3 experiencias y resultados sobre la creaci\u00f3n de un panel de control operativo.<\/b><\/p>\n<p>Digo de inmediato, no todo lo que se plane\u00f3 se pudo realizar, pero la experiencia fue interesante, espero que tambi\u00e9n les pueda resultar \u00fatil. Y si alguien tiene ideas sobre c\u00f3mo se podr\u00eda haber hecho mejor, agradecer\u00eda mucho los consejos y las ideas.<\/p>\n<p><img decoding=\"async\" alt=\"\u00bfTableau en retail, de verdad?\" src=\"\/wp-content\/uploads\/2020\/01\/81c41899e9b3acf1858a4faa627c121b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAbajo se habla sobre lo que encontramos y lo que aprendimos.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Por d\u00f3nde empezamos<\/h4>\n<p>\nEn \"M.Video-Eldorado\" existe un modelo de datos bien elaborado: informaci\u00f3n estructurada con la profundidad de almacenamiento requerida y una enorme cantidad de informes de forma fija (ver m\u00e1s detalles <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mvideo\/blog\/462015\/\">en este art\u00edculo<\/a><\/noindex>). De ellos, los analistas crean bien tablas din\u00e1micas o env\u00edos formateados en Excel, o presentaciones atractivas en PowerPoint para los usuarios finales.<\/p>\n<p>Hace aproximadamente dos a\u00f1os, en lugar de informes de forma fija, comenzamos a crear informes anal\u00edticos en SAP Analysis (un complemento para Excel, en esencia, una tabla din\u00e1mica sobre un motor OLAP). Pero esta herramienta no pudo satisfacer las necesidades de todos los usuarios; la mayor\u00eda sigui\u00f3 utilizando la informaci\u00f3n procesada por los analistas.<\/p>\n<p>Nuestros usuarios finales se dividen en tres categor\u00edas:<\/p>\n<p><b>Alta direcci\u00f3n<\/b>. Solicitan informaci\u00f3n de manera bien presentada y f\u00e1cil de entender.<\/p>\n<p><b>Gerentes intermedios<\/b>, usuarios avanzados. Est\u00e1n interesados en el an\u00e1lisis de datos y son capaces de generar informes de forma aut\u00f3noma si tienen las herramientas. Son ellos quienes se convirtieron en los usuarios clave de los informes anal\u00edticos en SAP Analysis.<\/p>\n<p><b>Usuarios masivos<\/b>. No est\u00e1n interesados en el an\u00e1lisis aut\u00f3nomo de datos, utilizan informes con un grado limitado de libertad, en forma de env\u00edos y tablas din\u00e1micas en Excel.<\/p>\n<p>Nuestra idea era atender las necesidades de todos los usuarios y proporcionarles una herramienta \u00fanica y conveniente. Decidimos comenzar con la alta direcci\u00f3n. Necesitaban paneles accesibles para analizar los principales resultados de negocio. As\u00ed, comenzamos con Tableau y, en un principio, elegimos dos \u00e1reas: las m\u00e9tricas de ventas en retail y online, con un an\u00e1lisis limitado en profundidad y amplitud, que cubrir\u00eda aproximadamente el 80% de los datos solicitados por la alta direcci\u00f3n.<\/p>\n<p>Dado que los usuarios de los paneles eran la alta direcci\u00f3n, surgi\u00f3 un KPI adicional para el producto: la velocidad de respuesta. Nadie va a esperar 20-30 segundos mientras se actualizan los datos. La navegaci\u00f3n deb\u00eda completarse en 4-5 segundos, o mejor a\u00fan, funcionar de manera instant\u00e1nea. Lamentablemente, no conseguimos lograrlo.<\/p>\n<p>As\u00ed es como se ve\u00eda el dise\u00f1o de nuestro panel principal:<\/p>\n<p><img decoding=\"async\" alt=\"\u00bfTableau en retail, de verdad?\" src=\"\/wp-content\/uploads\/2020\/01\/a7a028feee6542dfbc1fd3c2feeaa3de.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa idea clave es combinar los principales impulsores de KPI, que en total sumaron 19, a la izquierda y presentar su din\u00e1mica y desglose seg\u00fan los principales atributos a la derecha. La tarea parece sencilla, la visualizaci\u00f3n l\u00f3gica y clara, hasta que te sumerges en los detalles.<\/p>\n<h2>Detalle 1. Volumen de datos<\/h2>\n<p>\nLa tabla principal de ventas del a\u00f1o ocupa aproximadamente 300 millones de filas. Dado que es necesario reflejar la din\u00e1mica con respecto al a\u00f1o pasado y al anterior, el volumen de datos solo para ventas reales es de alrededor de 1 mil millones de filas. Adem\u00e1s, se almacena por separado la informaci\u00f3n sobre datos planificados y un bloque de ventas en l\u00ednea. Por lo tanto, a pesar de que utilizamos la base de datos in-memory columnar SAP HANA, la velocidad de la consulta seleccionando todas las m\u00e9tricas para una semana desde los almacenes actuales era de aproximadamente 15-20 segundos. La soluci\u00f3n a este problema parece evidente: materializaci\u00f3n adicional de datos. Pero tambi\u00e9n hay trampas en ello, que se describen a continuaci\u00f3n.<\/p>\n<h2>Detalle 2. Indicadores no aditivos<\/h2>\n<p>\nMuchos de nuestros KPI est\u00e1n vinculados al n\u00famero de recibos. Este indicador representa un COUNT DISTINCT de la cantidad de filas (encabezados de recibos) y muestra diferentes sumas dependiendo de los atributos seleccionados. Para ilustrar, as\u00ed es como este indicador y sus derivados deber\u00edan ser calculados:<\/p>\n<p><img decoding=\"async\" alt=\"\u00bfTableau en retail, de verdad?\" src=\"\/wp-content\/uploads\/2020\/01\/0a6d676f0a5c2b779a5e7892b1f54929.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPara garantizar la correcci\u00f3n de los c\u00e1lculos se puede:<\/p>\n<ul>\n<li>Realizar el c\u00e1lculo de dichos indicadores al instante en el almac\u00e9n;\n<\/li>\n<li>Realizar el c\u00e1lculo sobre todo el volumen de datos en Tableau, es decir, en una consulta a Tableau entregar todos los datos seg\u00fan los filtros seleccionados a nivel de posici\u00f3n de los recibos;\n<\/li>\n<li>Crear una vitrina materializada que calcule todos los indicadores en todas las variantes de muestreo, que den diferentes resultados no aditivos.\n<\/li>\n<\/ul>\n<p>\nEs claro que en el ejemplo UTE1 y UTE2 son atributos del material que representan la jerarqu\u00eda de productos. No es algo est\u00e1tico, a trav\u00e9s de esto se gestiona dentro de la empresa, ya que diferentes gerentes son responsables de diferentes grupos de productos. Hemos realizado muchas revisiones globales de esta jerarqu\u00eda, donde cambiaron todos los niveles, se revisaron las interrelaciones, as\u00ed como cambios puntuales constantes, cuando un grupo pasa de un nodo a otro. En los informes est\u00e1ndar, todo esto se calcula al instante a partir de los atributos del material, en caso de materializaci\u00f3n de estos datos, es necesario desarrollar un mecanismo para rastrear tales cambios y recargar autom\u00e1ticamente los datos hist\u00f3ricos. Es una tarea bastante no trivial.<\/p>\n<h2>Detalle 3. Comparaci\u00f3n de datos <\/h2>\n<p>\nEste punto es similar al anterior. La esencia es que en la empresa, durante el an\u00e1lisis, se tiende a formar varios niveles de comparaci\u00f3n con el per\u00edodo anterior:<\/p>\n<p><i>Comparaci\u00f3n con el per\u00edodo anterior (d\u00eda a d\u00eda, semana a semana, mes a mes)<\/i><\/p>\n<p>En esta comparaci\u00f3n se supone que, dependiendo del per\u00edodo elegido por el usuario (por ejemplo, la semana 33 del a\u00f1o), debemos mostrar la din\u00e1mica respecto a la semana 32; si hubi\u00e9ramos elegido datos del mes, por ejemplo, de mayo, esta comparaci\u00f3n mostrar\u00eda la din\u00e1mica respecto a abril.<\/p>\n<p><i>Comparaci\u00f3n con el a\u00f1o pasado<\/i><\/p>\n<p>Aqu\u00ed la clave es que al comparar por d\u00edas y por semanas no tomas el mismo d\u00eda del a\u00f1o pasado, es decir, no puedes simplemente poner el a\u00f1o actual menos uno. Debes observar el mismo d\u00eda de la semana en la comparaci\u00f3n. Por otro lado, al comparar meses, necesitas tomar exactamente el mismo d\u00eda del calendario del a\u00f1o pasado. Tambi\u00e9n hay consideraciones con los a\u00f1os bisiestos. En los almacenes originales, toda la informaci\u00f3n est\u00e1 distribuida por d\u00edas, no hay campos separados para semanas, meses o a\u00f1os. Por lo tanto, para obtener un an\u00e1lisis completo en el panel, necesitar\u00e1s contar no un solo per\u00edodo, por ejemplo una semana, sino 4 semanas, y luego comparar estos datos para reflejar la din\u00e1mica y las desviaciones. Por lo tanto, esta l\u00f3gica de formaci\u00f3n de comparaci\u00f3n din\u00e1mica tambi\u00e9n se puede implementar ya sea en Tableau o en el lado del front-end. Y, por supuesto, conoc\u00edamos y pens\u00e1bamos en estos detalles desde la fase de dise\u00f1o, pero fue dif\u00edcil pronosticar su impacto en el rendimiento del tablero final.<\/p>\n<p>Al implementar el tablero, seguimos un largo camino \u00e1gil. Nuestra tarea era proporcionar lo m\u00e1s r\u00e1pido posible una herramienta funcional para pruebas con los datos necesarios. Por lo tanto, trabajamos en sprints y nos enfocamos en minimizar el trabajo en el almac\u00e9n actual.<\/p>\n<h2>Parte 1. La Creencia en Tableau<\/h2>\n<p>\nPara simplificar el soporte de TI y la r\u00e1pida implementaci\u00f3n de cambios, decidimos hacer la l\u00f3gica de c\u00e1lculo de indicadores no aditivos y la comparaci\u00f3n de per\u00edodos anteriores en Tableau.<\/p>\n<h3>Etapa 1. Todo en Vivo, sin mejoras de front-end.<\/h3>\n<p>\nEn esta etapa, conectamos Tableau a las vitrinas actuales y decidimos observar c\u00f3mo se calcular\u00eda el n\u00famero de recibos en un a\u00f1o.<\/p>\n<p><b>Resultado:<\/b><\/p>\n<p>La respuesta fue desalentadora: 20 minutos. La transferencia de datos a trav\u00e9s de la red, alta carga en Tableau. Nos dimos cuenta de que la l\u00f3gica de indicadores no aditivos necesitaba implementarse en HANA. Esto no nos asust\u00f3 mucho, ya que ya ten\u00edamos experiencia con BO y Analysis y sab\u00edamos c\u00f3mo construir vitrinas r\u00e1pidas en HANA que proporcionan correctamente los indicadores no aditivos. Ahora solo quedaba ajustarlas para Tableau.<\/p>\n<h3>Etapa 2. Afinamos las vitrinas, sin materializaci\u00f3n, todo al vuelo.<\/h3>\n<p>\nHemos creado una nueva vitrina separada, que proporcionaba los datos requeridos para TABLEAU al instante. En general, logramos un buen resultado, reduciendo el tiempo de formaci\u00f3n de todos los indicadores de una semana a 9-10 segundos. Honestamente, esper\u00e1bamos que en Tableau el tiempo de respuesta del tablero fuera de 20-30 segundos en la primera apertura y luego, gracias a la cach\u00e9, de 10 a 12, lo que en general nos hubiera satisfecho.<\/p>\n<p><b>Resultado:<\/b><\/p>\n<p>Primeras aperturas del tablero: 4-5 minutos<br \/>\nCualquier clic: 3-4 minutos<br \/>\nNadie esperaba tal mejora en el rendimiento de la vitrina.<\/p>\n<h2>Parte 2. Inmersi\u00f3n en Tableau<\/h2>\n<p><\/p>\n<h3>Etapa 1. An\u00e1lisis del rendimiento de Tableau y ajuste r\u00e1pido<\/h3>\n<p>\nComenzamos a analizar en qu\u00e9 gastaba Tableau la mayor parte del tiempo. Y para esto hay herramientas bastante buenas, lo cual es sin duda una ventaja de Tableau. El principal problema que identificamos fueron las consultas SQL muy complejas que constru\u00eda Tableau. Estas estaban principalmente relacionadas con:<\/p>\n<p> \u2014 la transposici\u00f3n de datos. Como Tableau no tiene herramientas para transponer datasets, tuvimos que formar una tabla a trav\u00e9s de case para construir la parte izquierda del tablero con una representaci\u00f3n detallada de todos los KPI. El tama\u00f1o de las consultas SQL en la BD alcanzaba los 120 000 caracteres.<\/p>\n<p><img decoding=\"async\" alt=\"\u00bfTableau en retail, de verdad?\" src=\"\/wp-content\/uploads\/2020\/01\/8fc4d99017ddd604bbabb5ea0a19b38d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n \u2014 la selecci\u00f3n del per\u00edodo de tiempo. Esta consulta a nivel de BD tomaba m\u00e1s tiempo en compilar que en ejecutar:<\/p>\n<p><img decoding=\"async\" alt=\"\u00bfTableau en retail, de verdad?\" src=\"\/wp-content\/uploads\/2020\/01\/a9b9cc6ddd6b03c643935d070532728e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs decir, procesamiento de la consulta 12 segundos + 5 segundos de ejecuci\u00f3n.<\/p>\n<p>Decidimos simplificar la l\u00f3gica de c\u00e1lculos en el lado de Tableau y trasladar otra parte de los c\u00e1lculos a la vitrina y al nivel de la BD. Esto trajo buenos resultados.<\/p>\n<p>Primero hicimos la transposici\u00f3n al instante, utiliz\u00e1ndola a trav\u00e9s de un full outer join en la etapa final del c\u00e1lculo de VIEW, seg\u00fan este enfoque, descrito en wiki <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/Transpose\">Transpose \u2014 Wikipedia, the free encyclopedia<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/Elementary_matrix#Row-addition_transformations\">Elementary matrix \u2014 Wikipedia, the free encyclopedia<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"\u00bfTableau en retail, de verdad?\" src=\"\/wp-content\/uploads\/2020\/01\/5259995831dc8ae379a34bfe84e52daa.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs decir, creamos una tabla de configuraci\u00f3n: una matriz de transposici\u00f3n (21x21) y obtuvimos todos los indicadores en desgloses por fila.<\/p>\n<p>Antes:<br \/>\n<img decoding=\"async\" alt=\"\u00bfTableau en retail, de verdad?\" src=\"\/wp-content\/uploads\/2020\/01\/9382ee65a1482cc137a52b5f80c39eeb.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDespu\u00e9s:<br \/>\n<img decoding=\"async\" alt=\"\u00bfTableau en retail, de verdad?\" src=\"\/wp-content\/uploads\/2020\/01\/1d6653ec427ce0621b441943f589d860.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa transposici\u00f3n de la base de datos no consume pr\u00e1cticamente tiempo. La consulta por todos los indicadores de la semana todav\u00eda se procesaba en aproximadamente 10 segundos. Sin embargo, se perdi\u00f3 flexibilidad en la construcci\u00f3n del tablero para indicadores espec\u00edficos, es decir, en la parte derecha del tablero donde se presenta la din\u00e1mica y el desglose detallado de un indicador espec\u00edfico. Anteriormente, el dataset se procesaba en 1-3 segundos, ya que la consulta se centraba en un \u00fanico indicador, pero ahora la base de datos siempre selecciona todos los indicadores y filtra los resultados antes de devolverlos a Tableau.<\/p>\n<p>Como resultado, la velocidad de trabajo del tablero se redujo casi a la mitad.<\/p>\n<p><b>Resultado:<\/b><\/p>\n<ol>\n<li>5 seg \u2014 an\u00e1lisis del tablero, visualizaciones<\/li>\n<li> 15-20 seg \u2014 preparaci\u00f3n para la compilaci\u00f3n de consultas con la ejecuci\u00f3n de prec\u00e1lculos en Tableau<\/li>\n<li> 35-45 seg \u2014 compilaci\u00f3n de consultas SQL y su ejecuci\u00f3n secuencial-paralela en Hana<\/li>\n<li> 5 seg \u2014 procesamiento de resultados, ordenaci\u00f3n, rec\u00e1lculo de visualizaciones en Tableau<\/li>\n<li>Por supuesto, tales resultados no satisfac\u00edan al negocio, y continuamos con la optimizaci\u00f3n.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Fase 2. M\u00ednima l\u00f3gica en Tableau, total materializaci\u00f3n.<\/h3>\n<p>\nEntend\u00edamos que construir un tablero con un tiempo de respuesta de unos pocos segundos en una vista que actualmente toma 10 segundos era imposible, y consideramos opciones para materializar datos del lado de la base de datos espec\u00edficamente para el tablero requerido. Pero nos encontramos con un problema global, descrito anteriormente: indicadores no aditivos. No pudimos hacer que al cambiar filtros o desplegables, Tableau alternara de manera flexible entre diferentes vistas y niveles, precalculados para distintas jerarqu\u00edas de productos (en el ejemplo, tres consultas sin UTE, con UTE1 y UTE2 generan diferentes resultados). Por lo tanto, tomamos la decisi\u00f3n de simplificar el tablero, renunciando a la jerarqu\u00eda de productos en el tablero y ver qu\u00e9 tan r\u00e1pido podr\u00eda ser en una versi\u00f3n simplificada.<\/p>\n<p>As\u00ed, en esta \u00faltima etapa, recopilamos un almac\u00e9n separado, en el que almacenamos en forma transpuesta todos los KPI. Desde la base de datos, cualquier consulta a este tipo de almac\u00e9n se ejecuta en 0,1 \u2013 0,3 segundos. En el tablero obtuvimos los siguientes resultados:<\/p>\n<p>Primera apertura: 8-10 segundos<br \/>\nCualquier clic: 6-7 segundos<\/p>\n<p>El tiempo que gasta Tableau se compone de:<\/p>\n<ol>\n<li>0,3 seg. \u2014 an\u00e1lisis del tablero y compilaci\u00f3n de consultas SQL\n<\/li>\n<li>1,5-3 seg. \u2014 ejecuci\u00f3n de consultas SQL en Hana para las principales visualizaciones (se inicia en paralelo con el punto 1)\n<\/li>\n<li>1,5-2 seg. \u2014 renderizado, rec\u00e1lculo de visualizaciones\n<\/li>\n<li>1,3 seg. \u2014 ejecuci\u00f3n de consultas SQL adicionales para obtener valores relevantes de filtros (Marca, Divisi\u00f3n, Ciudad, Tienda), an\u00e1lisis de resultados\n<\/li>\n<\/ol>\n<p><\/p>\n<h3>Si resumimos brevemente<\/h3>\n<p>\nNos gust\u00f3 la herramienta Tableau en t\u00e9rminos de visualizaci\u00f3n. En la etapa de maquetaci\u00f3n, examinamos varios elementos de visualizaci\u00f3n y todos los encontramos en las bibliotecas, incluidas segmentaciones complejas y multi-controladores de waterfall.<\/p>\n<p>Al implementar tableros con indicadores clave de ventas, enfrentamos dificultades de rendimiento que a\u00fan no hemos podido superar. Pasamos m\u00e1s de dos meses y obtuvimos un tablero funcionalmente incompleto, cuya velocidad de respuesta est\u00e1 al l\u00edmite de lo aceptable. Y hemos llegado a las siguientes conclusiones:<\/p>\n<ol>\n<li>Tableau no puede manejar grandes vol\u00famenes de datos. Si en el modelo de datos de origen tiene m\u00e1s de 10 GB de datos (aproximadamente 200 millones x 50 filas), el panel se ralentiza seriamente, desde 10 segundos hasta varios minutos por cada clic. Hemos experimentado tanto con live-connect como con extracto. La velocidad de trabajo es comparable.\n<\/li>\n<li>Limitaci\u00f3n al usar m\u00faltiples almacenes (datasets). No hay forma est\u00e1ndar de establecer la relaci\u00f3n entre datasets. Si se utilizan soluciones alternativas para vincular datasets, esto afectar\u00e1 considerablemente el rendimiento. En nuestro caso, consideramos la opci\u00f3n de materializar datos en cada vista necesaria y en estos datasets materializados realizar alternancias conservando los filtros seleccionados anteriormente; esto result\u00f3 ser imposible de hacer en Tableau.\n<\/li>\n<li>En Tableau no es posible crear par\u00e1metros din\u00e1micos. No puedes llenar un par\u00e1metro, que se usa para filtrar el dataset en el extracto o al realizar live-connect, con el resultado de otra selecci\u00f3n del dataset o el resultado de otra consulta SQL, solo con la entrada nativa del usuario o una constante.\n<\/li>\n<li>Limitaciones relacionadas con la construcci\u00f3n de tableros con elementos OLAP|Tablas din\u00e1micas. <br \/>\nEn MSTR, SAP SAC, SAP Analysis, si agregas un conjunto de datos al informe, todos los objetos est\u00e1n interconectados por defecto. En Tableau, esto no sucede; la conexi\u00f3n debe configurarse manualmente. Probablemente esto sea m\u00e1s flexible, pero para todos nuestros dashboards es un requisito obligatorio para los elementos, por lo que implica un esfuerzo adicional. Adem\u00e1s, si est\u00e1s haciendo filtros vinculados, para que, por ejemplo, al filtrar por regi\u00f3n la lista de ciudades se limite solo a ciudades de esa regi\u00f3n, te enfrentas de inmediato a consultas secuenciales a la base de datos o al extracto, lo que ralentiza notablemente el dashboard.<\/li>\n<li>Limitaciones en las funciones. Tanto sobre el extracto como M\u00c1S A\u00daN sobre el conjunto de datos de Live-connecta no se pueden realizar transformaciones masivas. Esto se puede hacer a trav\u00e9s de Tableau Prep, pero eso significa trabajo adicional y otro instrumento que hay que aprender y mantener. Por ejemplo, no puedes transponer datos, ni hacer un join consigo mismo. Esto se cierra a trav\u00e9s de transformaciones de columnas o campos individuales, que deben seleccionarse a trav\u00e9s de case o if, lo que genera consultas SQL muy complejas, donde la base de datos pasa la mayor parte del tiempo compilando el texto de la consulta. Estas inflexibilidades del instrumento tuvieron que resolverse a nivel de la vitrina, lo que lleva a la complejidad del almacenamiento, cargas adicionales y transformaciones.\n<\/li>\n<\/ol>\n<p>\nNo hemos descartado Tableau. Pero como herramienta capaz de construir dashboards industriales y medio para reemplazar y digitalizar todo el sistema de informes corporativos de la empresa, no lo consideramos.<\/p>\n<p>Actualmente estamos desarrollando activamente un dashboard similar en otra herramienta y paralelamente estamos intentando revisar la arquitectura del dashboard en Tableau para simplificarla a\u00fan m\u00e1s. Si a la comunidad le interesa, contaremos sobre los resultados.<\/p>\n<p>Tambi\u00e9n esperamos sus ideas o consejos sobre c\u00f3mo en Tableau se pueden construir dashboards r\u00e1pidos sobre vol\u00famenes de datos tan grandes, ya que tenemos un sitio donde hay muchos m\u00e1s datos que en el comercio minorista.<br \/>\n<br \/>Fuente: <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\/es\/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=\"es_ES\" \/>\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\/es\/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\udd47\u00bfTableau en el retail, es posible? | ProHoster","description":"El tiempo de informes en Excel est\u00e1 desapareciendo r\u00e1pidamente; la tendencia hacia herramientas convenientes para la presentaci\u00f3n y an\u00e1lisis de informaci\u00f3n es evidente en todos los \u00e1mbitos.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/news\/tableau-v-roznitse-realno","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/55144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=55144"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/55144\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=55144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=55144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=55144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}