1
Prácticas recomendadas para el diseño de libros de trabajo de Tableau eficaces Segunda edición
Alan Eldridge
Tableau Software
15 de abril de 2014
2
Prefacio Una vez más, cabe aclarar que este documento es una síntesis del material escrito por diferentes
autores. Lo que yo hice fue recopilarlo en un documento único y tratar de aplicarle cierta estructura.
Muchas personas que lean esto reconocerán su huella en varias secciones (de hecho, algunas
reconocerán fragmentos enteros de texto). Agradezco a todas ellas porque sin su excelente trabajo y su
falta de declaraciones de violación de derechos de autor, yo aún seguiría investigando y escribiendo.
Este documento se actualizó para que refleje las capacidades de Tableau 8.1, y se incluyeron
comentarios acerca de cambios que se esperan en Tableau 8.2. Versiones futuras de Tableau
proporcionarán características y capacidades nuevas que pueden cambiar algunas de estas pautas.
3
Índice Prefacio ..................................................................................................................................................... 2
¿Qué es la eficacia? ................................................................................................................................... 5
¿Por qué nos importa? .......................................................................................................................... 5
Principios básicos .................................................................................................................................. 5
Parte 1: ¿Es el diseño del libro de trabajo? .............................................................................................. 7
¿Para qué sirve Tableau? ...................................................................................................................... 7
¿Para qué no está preparado Tableau? ................................................................................................ 8
Enfoques de diseño: malos vs. buenos ................................................................................................. 8
Parte 2: ¿Es la conexión de datos? ......................................................................................................... 13
Archivos ............................................................................................................................................... 13
Relacionales ........................................................................................................................................ 15
Hadoop ................................................................................................................................................ 18
OLAP .................................................................................................................................................... 18
Nube .................................................................................................................................................... 19
Servidor de datos ................................................................................................................................ 20
Extracciones ........................................................................................................................................ 21
Parte 3: ¿Es la consulta? ......................................................................................................................... 30
Comprensión de las consultas ............................................................................................................ 30
Registros del rendimiento ................................................................................................................... 30
Selección de uniones ........................................................................................................................... 32
Combinación ....................................................................................................................................... 33
Filtrado ................................................................................................................................................ 39
Parte 4: ¿Son los cálculos? ...................................................................................................................... 48
Cálculos básicos y agregados .............................................................................................................. 48
Cálculos de tablas ................................................................................................................................ 48
Cálculos vs. características nativas ..................................................................................................... 49
Impacto de los tipos de datos ............................................................................................................. 49
Técnicas de rendimiento ..................................................................................................................... 50
Parte 5: ¿Es una cuestión de escritorio vs. servidor? ............................................................................. 54
Pautas generales ................................................................................................................................. 54
4
Configuración ...................................................................................................................................... 54
Monitoreo de Tableau Server ............................................................................................................. 55
Almacenamiento en caché .................................................................................................................. 55
Parte 6: ¿Hay otros factores que considerar? ........................................................................................ 60
Entorno ............................................................................................................................................... 60
Anexo A: Recursos relacionales vs. OLAP ................................................................................................... 61
5
¿Qué es la eficacia? Existen varios factores que hacen que un libro de trabajo sea "eficaz". Algunos de estos factores son
técnicos, y otros se centran más en el usuario; pero, en general, un libro de trabajo eficaz es:
Un libro de trabajo que aprovecha los "principios del análisis visual" para comunicar el mensaje del
autor y los datos con eficacia, posiblemente, atrayendo al usuario con una experiencia interactiva.
Un libro de trabajo que responde de manera oportuna. Esta medida puede ser algo subjetiva,
pero, en general, se espera que el libro de trabajo proporcione una visualización inicial de la
información y una respuesta a las interacciones del usuario en pocos segundos.
La primera parte de este documento se centra en el primer punto y trata, principalmente, sobre el
diseño de libros de trabajo. La segunda parte se enfoca en los factores que afectan el rendimiento de los
libros de trabajo. Usted descubrirá que existen muchos factores que contribuyen al rendimiento de los
libros de trabajo, entre los que se incluyen:
la conexión de datos;
la consulta;
los cálculos;
el diseño de visualización;
algunas diferencias entre Tableau Desktop y Tableau Server.
¿Por qué nos importa? De acuerdo con nuestra vasta experiencia, la mayoría de los problemas de rendimiento que
experimentan los clientes están relacionados con los libros de trabajo. Si los resolvemos (o mejor aún,
los prevenimos mediante la educación) y tenemos libros de trabajo óptimos y eficaces, entonces
solucionaremos los problemas.
Principios básicos Antes de sumergirnos en los detalles técnicos de las distintas características que afectan el rendimiento
de los libros de trabajo, presentamos tres principios generales que lo ayudarán a crear dashboards y
vistas eficaces:
Todo con moderación
Como en todos los aspectos de la vida, demasiado de algo bueno puede ser malo. No intente incluir
absolutamente todo en un libro de trabajo único y monolítico. Si bien un libro de trabajo de Tableau
puede tener 50 dashboards, cada uno con 20 objetos gráficos, y comunicarse con 50 fuentes de datos
diferentes, casi con seguridad será muy lento.
Si se encuentra con un libro de trabajo de este tipo, considere dividirlo en varios archivos distintos. Esto
es mucho más fácil de hacer en la versión 8.1, ya que esta permite copiar dashboards entre libros de
trabajo. Si sus dashboards son extremadamente complejos, considere simplificarlos y usar interacciones
para guiar a los usuarios finales de una vista a otra. Recuerde que no fijamos el precio de nuestro
software por cantidad de documentos, así que distribuya los datos con tranquilidad.
6
Si no es rápido en la base de datos, no lo será en Tableau
Si su libro de trabajo de Tableau está basado en una consulta que se ejecuta lentamente en cualquier
herramienta que use para procesarla, el libro de trabajo también será lento.
En las secciones siguientes ofreceremos sugerencias para ajustar sus bases de datos, a fin de contribuir a
reducir el tiempo de ejecución de las consultas. Además, analizaremos cómo usar el veloz motor de
datos de Tableau para mejorar el rendimiento de las consultas.
Si no es rápido en Tableau Desktop, no lo será en Tableau Server
Los libros de trabajo que sean lentos en Tableau Desktop no serán más rápidos si los publica en Tableau
Server. En general, los libros de trabajo serán ligeramente más lentos en Tableau Server porque a) varios
usuarios comparten los recursos del servidor para generar libros de trabajo simultáneamente y b) el
servidor debe generar los dashboards y los gráficos en vez de que estos se creen en la estación de
trabajo del cliente.
La excepción a esta regla sucede si Tableau Desktop se encuentra con limitaciones de recursos que no existen
en el servidor; por ejemplo, si su computadora no tiene suficiente RAM para admitir el volumen de datos que
desea analizar. Algunos usuario se encuentran con un rendimiento reducido o, incluso, con errores por "falta
de memoria" cuando trabajan con conjuntos de datos en estaciones de trabajo con especificaciones básicas
de 2 GB de RAM; pero consideran que el funcionamiento del libro de trabajo publicado es aceptablemente
rápido porque el servidor tiene mucha más memoria y poder de procesamiento.
7
Parte 1: ¿Es el diseño del libro de trabajo? Trabajar con Tableau es una experiencia nueva para muchos usuarios, y existen técnicas y prácticas
recomendadas que estos deben aprender para crear libros de trabajo eficaces. Sin embargo, hemos
notado que muchos usuarios nuevos intentan aplicar enfoques de diseño antiguos con Tableau
y obtienen resultados fútiles. En este documento se intenta desarrollar y promover prácticas
recomendadas para el uso de una nueva categoría de análisis de datos empresariales y una nueva
categoría de herramientas de análisis de datos.
¿Para qué sirve Tableau? En Tableau Software, queremos cambiar la manera en que las personas ven y comprenden los datos
y cómo interactúan con ellos. Como resultado, no intentamos ofrecer el mismo tipo de experiencia que
ofrecen las plataformas de BI empresariales tradicionales. Tableau funciona mejor cuando se usa para
crear libros de trabajo que sean:
Visuales: hay muchísima evidencia que muestra que para los seres humanos la manera más
eficaz de entender conjuntos de datos grandes y complejos es mediante representaciones
visuales. El procedimiento predeterminado de Tableau consiste en presentar los datos a través
de gráficos, diagramas y dashboards. Las tablas y las tabulaciones cruzadas tienen su lugar (y se
admiten), y hablaremos sobre cómo aprovecharlas más adelante.
Interactivos: los documentos de Tableau están diseñados principalmente para proporcionar resultados
con los que los usuarios puedan interactuar, tanto en sus escritorios como en la Web y en dispositivos
móviles. A diferencia de otras herramientas de BI que producen, principalmente, resultados de
impresión (ya sean para papel o para documentos, por ejemplo, pdf), el objetivo es diseñar experiencias
útiles e interactivas que permitan a los usuarios explorar los datos y resolver consultas de negocios.
Iterativos: el descubrimiento es un proceso cíclico por naturaleza. Tableau está diseñado para acelerar
el ciclo de consulta-entendimiento-consulta para que los usuarios puedan desarrollar hipótesis
rápidamente, probarlas con los datos disponibles, corregirlas, volverlas a probar y así sucesivamente.
Rápidos: históricamente, el proceso de BI ha sido lento. Ha sido lento para instalar y configurar
software, lento para poner los datos a disposición para el análisis y lento para diseñar e
implementar documentos, informes, dashboards, etc. Tableau permite a los usuarios instalarlo,
conectarse y crear documentos más rápido que nunca y, en muchos casos, reduce el tiempo de
respuesta a las consultas de meses o semanas a horas o minutos.
Sencillos: las herramientas de BI empresariales tradicionales suelen exceder las capacidades de la
mayoría de los usuarios profesionales debido a su costo o a su complejidad. En muchos casos, los
usuarios necesitan asistencia de TI o de algún usuario avanzado para crear las consultas y los
documentos que desean. Tableau ofrece una interfaz intuitiva para que los usuarios sin
conocimientos técnicos puedan hacer consultas y análisis de datos complejos sin necesidad de
convertirse en expertos en bases de datos u hojas de cálculo.
Bonitos: dicen que la belleza depende de los ojos con que se la mire, pero en el mundo de la
comunicación visual existen prácticas recomendadas que deben respetarse. Mediante funciones
como "Mostrarme", Tableau guía a los usuarios sin conocimientos técnicos en la creación de
gráficos eficaces y comprensibles basados en los datos que se usen.
8
Ubicuos: cada vez es menos frecuente que los usuarios creen documentos para una única
plataforma de trabajo. Ellos necesitan ver los datos e interactuar con estos en sus escritorios, en
la Web y en dispositivos móviles, además de insertarlos en otras aplicaciones y documentos, y
más. Tableau permite publicar documentos y, después, usarlos en todas estas plataformas sin
necesidad de migración ni rediseño.
¿Para qué no está preparado Tableau? Tableau es una herramienta sofisticada y eficaz, pero se debe comprender desde el principio que
probablemente no sea la mejor solución para resolver ciertos problemas. Esto no significa que no pueda
usarse la herramienta: Tableau puede manipularse para que realice muchas tareas para las que no fue
diseñado originalmente. Lo que queremos decir es que si usa Tableau para tratar de resolver problemas
para los cuales la herramienta no está diseñada, la relación entre esfuerzo y recompensa
probablemente no será favorable, y la solución resultante puede ser poco o nada satisfactoria.
Sugerimos que piense en modificar sus requisitos o considere otro enfoque si:
Necesita un documento que esté diseñado para el papel, no para la pantalla. Con esto nos referimos
a los casos en los que necesite controlar diseños de página complejos; deba incluir características
como encabezados o pies de página, sección o grupo, o requiera un formato WYSIWYG preciso.
Tableau puede generar informes de varias páginas, pero estos carecen del nivel de control de formato
que está disponible en las herramientas dedicadas de generación de informes con bandas.
Necesita un mecanismo instantáneo complejo para documentos personalizables (también llamado
"envío en ráfaga") que se envíen con distintos modos de entrega. Se puede usar Tableau para crear
sistemas instantáneos, pero esta no es una característica nativa de Tableau. Se debe desarrollar una
solución personalizada basada en la utilidad TABCMD. Tableau 8 presentó el concepto de suscripción
a informes, pero este es un modelo de búsqueda por usuario, no una ráfaga de informes.
El caso de uso principal para el lector es exportar los datos en otro formato (frecuentemente un
archivo CSV o de Excel). Por lo general, se requieren informes tabulares con muchas filas de datos
detallados. Debe quedar claro que Tableau permite a los usuarios exportar los datos de una vista o un
dashboard a Excel, tanto en resumen como de manera detallada. Sin embargo, cuando el caso de uso
principal es exportar, el proceso consiste en extraer, transformar y cargar (ETL) copias. Existen
soluciones mucho más eficaces que una herramienta de generación de informes para lograr esto.
Necesita documentos de tabulación cruzada muy complejos que, quizás, imiten informes de hoja
de cálculo existentes con cálculos de subtotales difíciles, referencias cruzadas complicadas, etc.
Los ejemplos más comunes de esto son los informes financieros, como estados de resultados,
balances generales, etc. Además, puede tener la necesidad de realizar modelos de situaciones,
análisis "qué pasaría si" e, incluso, modificaciones de datos supuestos. Si los datos minuciosos
subyacentes no están disponibles o si la lógica para generar informes se basa en "referencias de
celdas", en vez de combinar los registros y calcular totales, puede ser apropiado continuar
usando una hoja de cálculo para este tipo de informes.
Enfoques de diseño: malos vs. buenos Con Tableau, usted crea una experiencia interactiva para sus usuarios finales. El resultado final que
proporciona Tableau Server es una aplicación interactiva que permite a los usuarios explorar los datos,
9
en lugar de solo verlos. Por lo tanto, para crear un dashboard de Tableau eficaz, necesita dejar de pensar
como si estuviera desarrollando un informe estático.
Veamos un ejemplo de un tipo de dashboard que muchos novatos crean, especialmente si antes trabajaron
con herramientas como Excel o Access, o si tienen experiencia en el uso de herramientas "tradicionales" de
generación de informes. Comenzamos con un informe tabular que muestra "todo" y una serie de filtros que
permiten al usuario restringir la tabla hasta que muestre los registros que le interesan:
Este no es un "buen" dashboard de Tableau (de hecho, no es nada "bueno"). En el peor de los casos, es
un proceso de extracción de datos glorificado porque el usuario desea llevar los datos a otra
herramienta, como Excel, para hacer análisis y gráficos adicionales. En el mejor de los casos, indica que,
en realidad, no entendemos cómo el usuario final desea explorar los datos, de modo que tomamos el
siguiente enfoque: "En función de su criterio inicial, le proporcionamos todo... e incluimos algunos filtros
para que pueda restringir el conjunto de resultados y encontrar lo que realmente busca".
Ahora, considere el siguiente reprocesamiento con los mismos datos. Comenzamos con el nivel de
agregación más alto:
10
Si seleccionamos uno o más elementos, se muestra el siguiente nivel de detalle:
Continuamos haciendo esto y revelamos cada vez más detalles:
Finalmente, llegamos a revelar el máximo nivel de datos, los mismos datos que se mostraron en el
dashboard de tabulación cruzada de arriba.
11
No se concentre en la presentación de los datos (es un tema importante, pero lo trataremos más
adelante). En lugar de eso, reflexione acerca de la experiencia de usar este dashboard. Observe cómo
fluye naturalmente, de izquierda a derecha, de arriba a abajo. Este ejemplo puede tener muchos datos
subyacentes, pero el dashboard guía al usuario final a explorar en profundidad y de manera gradual para
que pueda encontrar el conjunto de registros detallados y precisos que busca.
La diferencia principal de los dos ejemplos es el modo en que se guía al usuario final en el proceso de
análisis. El primer ejemplo arroja un resultado inicial extenso (muestra todos los registros posibles) y
permite al usuario final reducir la cantidad de registros que se muestran mediante la aplicación de
filtros. Pero existen problemas inherentes a esta técnica:
La consulta inicial que debe ejecutarse antes de que se muestre algo al usuario final es,
básicamente, la consulta más general que se puede hacer: "deme todos los registros". Con
cualquier conjunto de datos real, ejecutar esta consulta y transmitirla de vuelta al motor de
Tableau llevaría un tiempo considerable. La experiencia del "contacto inicial" es fundamental
para establecer la percepción del usuario final con respecto a la solución; y si transcurren más de
unos pocos segundos antes de que algo suceda, la percepción será negativa.
Crear una vista con cientos de miles o millones de marcas (cada celda de una tabulación cruzada
se llama marca) implica una gran exigencia sobre la CPU y la memoria. También demanda
tiempo, lo que contribuye a la percepción negativa de la capacidad de respuesta del sistema. En
Tableau Server, el hecho de que muchas personas generen tabulaciones cruzadas grandes al
mismo tiempo puede provocar un rendimiento reducido y, en el peor de los casos, agotar la
memoria del sistema. En términos técnicos, esto es "algo muy malo" y puede causar problemas
12
de estabilidad del servidor, errores y toda clase de experiencias desagradables para los usuarios
finales. Por supuesto que puede agregar más memoria al servidor para minimizar esto; pero
estaría tratando el síntoma, no la causa.
Por último, los usuarios no tienen ninguna guía contextual que les indique si su conjunto inicial
de filtros producirá resultados muy extensos o muy reducidos. ¿Cómo puede saber el usuario de
un informe que si selecciona todas las categorías disponibles, la consulta inicial producirá
decenas de miles de registros y agotará toda la memoria RAM disponible del servidor? No puede
saberlo si no lo experimenta.
Compare esto con el segundo enfoque, en el que la consulta inicial muestra únicamente el nivel más alto
de agregación:
La primera consulta que se debe ejecutar es altamente agregada y, en consecuencia, proporciona
solo una cantidad mínima de datos. Para las bases de datos bien diseñadas, esta es una actividad
muy eficaz, y el tiempo de respuesta del "primer contacto" es muy rápido, lo que conduce a una
percepción positiva del sistema. A medida que profundizamos, cada consulta posterior se agrega
y restringe por las selecciones del nivel más alto. Estas continúan ejecutándose y regresando al
motor de Tableau rápidamente.
Aunque contamos con más vistas cuando el dashboard está completo, cada vista muestra solo
unas pocas docenas de marcas. Incluso si muchos usuarios finales están usando el sistema, los
recursos necesarios para generar cada una de estas vistas son insignificantes, y es mucho menos
probable que el sistema se quede sin memoria.
Por último, se puede observar que aprovechamos la oportunidad para mostrar el volumen
de ventas de cada categoría en los niveles de "navegación" más altos. Esto proporciona algo
de contexto al usuario acerca de la cantidad de registros que incluye la selección. También
indicamos la rentabilidad de cada categoría con colores. Esto se vuelve extremadamente
relevante, ya que le permite ver qué áreas requieren de su atención y evita que tenga que
navegar a ciegas.
13
Parte 2: ¿Es la conexión de datos? Una de las valiosas características de Tableau es su capacidad de conectarse a datos de una gran
variedad de plataformas. En términos generales, estas plataformas pueden ser de los siguientes tipos:
fuentes de datos basadas en archivos;
fuentes de datos relacionales;
fuentes de datos OLAP;
fuentes de datos basadas en Web.
Todos los tipos de fuentes de datos tienen sus propias ventajas y desventajas, y se tratan de manera
independiente.
Tenga en cuenta que en Tableau 8.2 incluimos soporte para Tableau Desktop en Mac OS X. Al principio,
el conjunto de fuentes de datos admitidas en Mac no será el mismo que el de Windows; trabajaremos
para minimizar las diferencias entre las plataformas, pero puede haber casos en los que algunas fuentes
de datos solo se admitan en una plataforma.
Archivos Esta categoría abarca todos los formatos de datos basados en archivos: los archivos de texto, como CSV,
las hojas de cálculo de Excel y los archivos de MS Access son los más comunes. Los usuarios profesionales
comúnmente usan datos en estos formatos porque permiten extraer los datos de conjuntos de datos
"gestionados", ya sea mediante la generación de informes o la extracción basada en consultas.
En general, recomendamos a los usuarios que importen estos tipos de fuentes de datos en el motor de
datos veloz de Tableau. Esto hará que las consultas se ejecuten mucho más rápido y que los valores de
datos se almacenen en archivos mucho más pequeños. Sin embargo, si el archivo es pequeño o se
necesita una conexión en vivo con el archivo para reflejar datos cambiantes, puede conectarse en vivo.
En la mayoría de los casos, Tableau usa el controlador Microsoft JET para conectarse a estas fuentes de
datos, extraerlas y ejecutar consultas basadas en ellas. Hay varios problemas que suelen enfrentar los
usuarios finales debido a limitaciones de esta capa de la interfaz:
El controlador MS JET tiene limitaciones con respecto a la cantidad y al tamaño de las columnas que se pueden leer. Para que los archivos se lean, estos no pueden tener más de 255 columnas,
y los campos de texto se truncan en los 255 caracteres. En la siguiente conversación de un foro
se analizan estas limitaciones: http://community.tableausoftware.com/thread/109727.
Debido a que los archivos de texto y las hojas de cálculo de Excel no son fuentes de datos "con tipo", el controlador MS JET examina las N primeras filas del archivo para determinar qué tipo de datos
contiene en cada columna. A veces, esto no es suficiente para identificar correctamente el tipo de datos almacenados en un campo de origen. Por ejemplo, es posible que se detecten solo valores con
números y se determine que el tipo de datos es numérico, pero en celdas posteriores de la tabla haya
valores alfanuméricos. El siguiente artículo de la base de conocimiento identifica varias formas de lidiar con este problema: http://kb.tableausoftware.com/articles/knowledgebase/jet-incorrect-data-type-issues?lang=es-es.
El controlador MS JET no admite el RECUENTO DE VALORES DIFERENCIADOS ni la MEDIANA como agregaciones. Cuando se usa una conexión en vivo a una fuente de datos basada en archivos, estas
14
funciones no están disponibles en la interfaz de Tableau Desktop. La forma más sencilla de proceder
es extraer los datos y llevarlos al veloz motor de datos de Tableau, que admite estas funciones.
El controlador MS JET no puede leer archivos de más de 4 GB. Mientras que esto no es un problema
para los archivos de Excel o Access, que tienen limitaciones de tamaño similares, puede ser un
inconveniente para archivos de texto extremadamente grandes. Para solucionar esto, Tableau incorporó un analizador de texto dedicado en la versión 6.1. En consecuencia, se pueden importar archivos de texto de cualquier tamaño y llevarlos al veloz motor de datos de Tableau; no se recomienda
hacer consultas directas a estos archivos porque el rendimiento sería pésimo. Sin embargo, existen limitaciones de uso del analizador: solo debe usarse para hacer una lectura directa del archivo de texto. Si aplicamos cálculos o filtros, el proceso de importación usa el controlador MS JET en su lugar.
En Tableau 8.2, presentamos una nueva capa conectora para fuentes de datos basadas en archivos:
específicamente, archivos de texto y libros de trabajo de Excel. Esta capa conectora se incorporó para
superar muchos de los problemas mencionados relacionados con las fuentes de datos basadas en
archivos, pero también para admitir Tableau Desktop en Mac OS X.
Este nuevo conector no usa MS JET, por lo que no se aplican las limitaciones mencionadas. No obstante,
habrá algunas diferencias:
Texto Excel
Se ganó análisis mucho más eficaz en general detección mucho más precisa del tipo
de campo: más filas, mejor lógica detección automática del delimitador
y la página de códigos detección automática más precisa de
la presencia o ausencia de encabezados de datos
todas las funciones del motor de datos que no están en JET (RECUENTO DE VALORES DIFERENCIADOS, MEDIANA, PERCENTILES, ANÁLISIS DE FECHA,...)
conjuntos de entrada/salida conjuntos combinados fracciones de segundo como fechas AAAAMMDD como fecha X% como números más de 255 columnas caracteres calificadores de texto
(estimación) configuración regional de análisis explícita compatibilidad con Mac
análisis mucho más eficaz en general detección mucho más precisa del tipo
de campo: más filas, mejor lógica detección automática de la presencia
o ausencia de encabezados de datos nombres de campos más apropiados todas las funciones del motor de datos que
no están en JET (RECUENTO DE VALORES DIFERENCIADOS, MEDIANA, PERCENTILES, ANÁLISIS DE FECHA,...)
conjuntos de entrada/salida conjuntos combinados más de 255 columnas análisis de columnas de enteros como
enteros en vez de dobles análisis de columnas de fechas sin hora
como fechas en vez de fecha y hora hojas con comillas simples que funcionan
(ejemplo de una ganancia poco clara) compatibilidad con Mac
Se perdió JET SQL: SQL en bruto y SQL personalizado formatos de archivo de ancho arreglado
en schema.ini uniones correctas y completas uniones de igualdad
JET SQL: SQL en bruto y SQL personalizado compatibilidad con archivos de Excel 3, 4 y 5 compatibilidad con XLSB uniones correctas y completas uniones de igualdad
15
Los usuarios que ejecuten Tableau en Windows tendrán la posibilidad de volver al conector basado en MS JET
anterior si lo necesitan, pero esta opción no estará disponible para usuarios que ejecuten Tableau en Mac.
Relacionales Las fuentes de datos relacionales son las fuentes de datos más comunes para los usuarios de Tableau, y
Tableau proporciona controladores nativos para una amplia gama de plataformas. Estos pueden basarse
en filas o columnas; pueden ser personales o empresariales, y puede accederse a ellos mediante
controladores nativos u ODBC genérico. Técnicamente, esta categoría también incluye las fuentes de
datos de MapReduce, ya que se accede a ellas a través de capas de acceso SQL, como Hive o Impala;
pero analizaremos estas fuentes en detalle más adelante.
Existen muchos factores internos que afectan la velocidad de las consultas en los sistemas de
administración de bases de datos relacionales (RDBMS). Para cambiarlos o modificarlos, probablemente
necesite ayuda de su DBA, pero puede obtener mejoras de rendimiento significativas.
Índices
La indexación correcta de la base de datos es fundamental para que las consultas sean eficaces:
Asegúrese de que todas las columnas que formen parte de las UNIONES de la tabla estén indexadas.
Asegúrese de que todas las columnas que se usen en FILTROS, en Tableau, estén indexadas.
Tenga en cuenta que el uso de filtros de fecha discretos en algunas bases de datos puede resultar
en que las consultas no usen los índices de las columnas de fecha y fecha/hora. Analizaremos
esto en profundidad en la sección de filtros, pero sepa que usar un filtro por rango de fechas
garantiza que se use el índice de las fechas. Es decir, en vez de usar YEAR([DateDim])=2010
exprese el filtro como [DateDim] >= #2010-01-01# and [DateDim] <= #2010-12-31#).
Asegúrese de que las estadísticas de sus datos estén habilitadas para permitir que el optimizador
de consultas cree planes de consulta de alta calidad.
Muchos entornos de sistemas de administración de bases de datos (DBMS) tienen herramientas
de gestión que recomiendan índices en función de las consultas.
Integridad referencial
La información de integridad referencial le permite a Tableau entender cómo se relacionan los datos de
diferentes tablas. Asegurar que esta se configure de manera correcta contribuye a que Tableau cree
consultas eficaces:
Defina EXPLÍCITAMENTE CLAVES PRINCIPALES para todas las tablas si es posible.
Defina EXPLÍCITAMENTE todas las relaciones con CLAVES EXTERNAS. Esto le permite a Tableau eludir
muchas de sus comprobaciones de integridad, ya que detecta que la base de datos hace la verificación.
Particionamiento
El particionamiento de bases de datos mejora el rendimiento mediante la división de tablas grandes en
tablas individuales más pequeñas (llamadas particiones o divisiones). Esto permite que las consultas se
ejecuten con más rapidez, ya que la cantidad de datos que se debe examinar es menor o hay más
controladores que asisten la entrada y la salida. El particionamiento es una estrategia recomendada
para grandes volúmenes de datos y es transparente para Tableau.
16
El particionamiento funciona bien en Tableau si se hace en una dimensión (por ejemplo, tiempo, región,
categoría, etc.) que normalmente se filtre, de modo que las consultas individuales solo tengan que leer
registros de una sola partición.
Tenga en cuenta que para algunas bases de datos se necesitan filtros por rango de fechas (no filtros
discretos) para garantizar que los índices de partición se usen correctamente; de lo contrario, la
examinación de una tabla completa puede tener un rendimiento muy bajo.
Valores nulos
La presencia de valores nulos en las columnas de dimensión puede reducir la eficacia de los índices de
muchas bases de datos. Cuando sea posible, defina sus columnas de dimensión como NO NULAS.
Cálculos
En Tableau, los campos calculados se expresan como parte de la consulta que se inserta en la base de
datos para su procesamiento. Si usted tiene cálculos muy complejos, quizás el SQL generado no sea la
opción óptima y pueda mejorarse.
En estas situaciones, puede crear una instrucción SQL personalizada para ajustar manualmente la
expresión (pero esto tiene sus propias desventajas, que analizaremos más adelante) o puede
implementar la expresión en una vista o función de la base de datos.
SQL personalizado
Si bien la capacidad de crear una conexión de datos con un fragmento de SQL personalizado puede ser
muy valiosa, tiene sus limitaciones de rendimiento. A diferencia de las tablas únicas o múltiples, el SQL
personalizado nunca se desglosa y se ejecuta atómicamente. Finalmente, nos encontramos con
situaciones en las que la base de datos debe procesar:
SELECT SUM([TableauSQL].[Sales])
FROM (
SELECT [OrdersFact].[Order ID] AS [Order ID],
[OrdersFact].[Date ID] AS [Date ID],
[OrdersFact].[Customer ID] AS [Customer ID],
[OrdersFact].[Place ID] AS [Place ID],
[OrdersFact].[Product ID] AS [Product ID],
[OrdersFact].[Delivery ID] AS [Delivery ID],
[OrdersFact].[Discount] AS [Discount],
[OrdersFact].[Cost] AS [Cost],
[OrdersFact].[Sales] AS [Sales],
[OrdersFact].[Qty] AS [Qty],
[OrdersFact].[Profit] AS [Profit]
FROM [dbo].[OrdersFact] [OrdersFact]
) [TableauSQL]
HAVING (COUNT_BIG(1) > 0)
Una buena recomendación es usar SQL personalizado en combinación con el motor de datos rápido de Tableau.
Así, la consulta atómica se ejecuta una sola vez (para cargar los datos en la extracción de datos), y todo el
análisis siguiente con Tableau se hace mediante consultas dinámicas optimizadas a la extracción de datos.
Consulte la sección siguiente sobre filtros de contexto para conocer otra técnica para forzar a la base de datos a
que presente los resultados del SQL personalizado en una tabla temporal.
17
A partir del lanzamiento de Tableau 8, se pueden usar parámetros en SQL personalizado; en algunos
casos, estos pueden mejorar el rendimiento de las conexiones en vivo, ya que otorgan más dinamismo
a la consulta básica (p. ej., las cláusulas de filtros que usen parámetros se evaluarán de manera
apropiada). Además, los parámetros pueden usarse para introducir valores de delimitación de
rendimiento, como TOP o SAMPLE, a fin de restringir la cantidad de datos que devuelve la base de
datos. No obstante, tenga en cuenta que los parámetros solo pueden usarse para introducir valores
literales y no pueden usarse para cambiar de forma dinámica las cláusulas SELECT ni las FROM.
Tablas resumidas
Si tiene un conjunto de datos muy grande y detallado que suele resumir cuando hace consultas (p. ej., guarda
transacciones individuales, pero generalmente usa los datos resumidos por día, región, cliente, producto,
etc.), considere crear una tabla resumida y usar Tableau con ella para reducir los tiempos de consulta.
Nota: Puede usar extracciones de datos de Tableau para lograr un resultado similar creando una
extracción de datos agregada. Consulte la sección sobre extracciones para obtener más detalles.
Procedimientos almacenados
Tableau 8.1 admite procedimientos almacenados en Sybase ASE, SQL Server y Teradata. Si debe
implementar una lógica muy compleja (p. ej., basada en información de los usuarios), esta puede ser
una alternativa eficaz al SQL personalizado.
Si usa procedimiento almacenados para definir una fuente de datos para Tableau, tenga en cuenta lo
siguiente:
Si un procedimiento almacenado genera más de un conjunto de resultados, Tableau lee el
primero e ignora el resto.
Si un procedimiento almacenado tiene parámetros de salida, Tableau filtra el procedimiento
almacenado para que no aparezca en el cuadro de diálogo de Conexión.
Los procedimientos almacenados que tienen parámetros no escalares se excluyen.
Las columnas del conjunto de resultados que no tengan tipos que coincidan con los de Tableau
(como varbinary, geometry y hierarchyid) se registran. Si a todas las columnas del conjunto de
resultados se les asignan tipos de datos desconocidos, Tableau muestra un mensaje: "El conjunto
de resultados... no tiene columnas que se puedan usar".
Los procedimientos almacenados que no generan conjuntos de resultados se enumeran en el
cuadro de diálogo Conexión, pero no se pueden seleccionar.
Si no se proporciona un valor para un parámetro requerido por el procedimiento almacenado,
se produce un error. Tableau no puede determinar con antelación si se requieren parámetros.
Tableau no gestiona transacciones de procedimientos almacenados. Es decir, los creadores de
procedimientos almacenados no deben asumir que Tableau iniciará transacciones antes de
invocar estos procedimientos ni que los confirmará después.
SQL inicial
Otra alternativa al uso de SQL personalizado (si su fuente de datos la admite) consiste en usar la
instrucción SQL personalizada en un bloque SQL inicial. Con ella puede crear una tabla temporal, que
será la tabla seleccionada para su consulta. Debido a que el SQL inicial se ejecuta una sola vez cuando se
18
abre el libro de trabajo (en lugar de ejecutarse cada vez que se cambia la visualización del SQL
personalizado), esto podría mejorar considerablemente el rendimiento en algunos casos.
Hadoop En Tableau 8.1 se admiten tres distribuciones Hadoop (además de las interfaces compatibles):
Cloudera Hadoop
Hive Server
Impala
Beeswax Server
Beeswax Server y Kerberos
Hortonworks Hadoop Hive
Hive Server
Hive Server 2
Hortonworks Hadoop Hive
MapR Hadoop Hive
Hive Server
Hive Server 2
Hive actúa como capa traductora de SQL-Hadoop: traduce la consulta a MapReduce, la cual después se
ejecuta con los datos de HDFS. Impala ejecuta la instrucción SQL directamente con los datos de HDFS
(no necesita MapReduce). Generalmente, Impala es mucho más rápido que Hive, aunque se producen
cambios con frecuencia, y tecnologías nuevas, como Apache Shark (diseñado de modo que sea
compatible con Hive), Hortonworks Stinger y otras pueden lograr diferencias menores o nulas.
Incluso con estos componentes adicionales, por lo general, Hadoop no responde adecuadamente a las
consultas analíticas como las que crea Tableau. Las extracciones de datos de Tableau suelen usarse para
mejorar los tiempos de respuesta de las consultas (analizaremos más información sobre las extracciones
y cómo estas se pueden usar con "big data" más adelante).
Puede encontrar más detalles para mejorar el rendimiento con fuentes de datos de Hadoop en:
http://kb.tableausoftware.com/articles/knowledgebase/hadoop-hive-performance?lang=es-es
OLAP Tableau admite varias fuentes de datos OLAP:
Microsoft Analysis Services
Microsoft PowerPivot (PowerPivot para Excel y PowerPivot para SharePoint)
Oracle Essbase
SAP BW
Teradata OLAP
19
Existen diferencias funcionales entre la conexión a una base de datos OLAP y a una relacional debido
a las diferencias de los lenguajes subyacentes, MDX/DAX y SQL. Lo principal que debe tener presente
es que ambas tienen la misma interfaz de usuario en Tableau, las mismas visualizaciones y el mismo
lenguaje de expresión para las medidas calculadas. Las diferencias se relacionan, principalmente, con
los metadatos (cómo y dónde se definen), los filtros, el funcionamiento de los totales y las agregaciones,
y la forma en que se puede usar la fuente de datos para la combinación de datos.
Consulte el Anexo A para conocer más detalles.
Ahora, con Tableau 8.1 puede extraer datos de cubos SAP BW hacia el motor de datos de Tableau. Tableau
recupera los nodos de nivel de hoja (no los datos detallados) y los convierte en una fuente de datos
relacional. Como la transformación de multidimensional a relacional no conserva todas las estructuras de
cubo, las extracciones con cubos no admiten la posibilidad de cambiar libremente una y otra vez entre una
extracción y una conexión en vivo sin que el estado de su visualización se vea afectado. Deberá elegir antes
de comenzar a armar su visualización. Sin embargo, no debe decidir todo desde un principio. Puede alternar
entre opciones de alias (clave, nombre largo, etc.) después de la extracción.
Nube Actualmente, Tableau admite las siguientes fuentes de datos basadas en Web:
Salesforce.com
Google Analytics
OData
Windows Azure Marketplace DataMarket
Las fuentes de este primer grupo leen un conjunto de registros de datos de un servicio web y los cargan
en un archivo de extracción de datos de Tableau. La "conexión en vivo" no es posible para estas fuentes
de datos, pero el archivo extraído puede actualizarse para que también se actualicen los datos que
contiene. Con Tableau Server, este proceso de actualización puede automatizarse y programarse.
Amazon Redshift
Google BigQuery
Microsoft SQL Server Azure (mediante el controlador SQL Server)
Aunque estas fuentes de datos también están basadas en Web, funcionan como fuentes de datos
relacionales y permiten tanto conexiones en vivo como extracciones.
Salesforce
Cuando se conecta a Salesforce mediante Tableau, los datos se extraen automáticamente en un archivo
de extracción de datos de Tableau. En algunos casos, no se pueden extraer ciertos campos debido a
límites de caracteres. Específicamente, los campos de texto con más de 4096 caracteres y los campos
calculados no se incluirán en la extracción. Si sus datos tienen campos calculados, usted deberá
recrearlos en Tableau después de hacer la extracción.
Además, la API de Force.com restringe las consultas a un total de 10 000 caracteres. Si se conecta a una o más
tablas muy anchas (muchas columnas con nombres posiblemente muy largos), puede llegar al límite cuando
20
intente crear una extracción. En estos casos, debe seleccionar menos columnas para reducir el tamaño de la
consulta. Es posible que Salesforce.com sea capaz de ampliar el límite de consulta de su empresa en ciertos
casos. Comuníquese con su administrador de Salesforce.com para obtener más información.
Google Analytics
Google Analytics (GA) toma una muestra de sus datos cuando un informe incluye gran cantidad de
dimensiones o datos. Si sus datos para una propiedad web específica y un rango de fechas dado
superan (para una cuenta de GA normal) las 50 000 visitas, GA agregará los resultados y proporcionará
un conjunto de muestra de esos datos. Cuando GA haya proporcionado un conjunto de muestra de los
datos a Tableau, Tableau mostrará el siguiente mensaje en la esquina inferior derecha de la vista:
"Google Analytics devolvió datos muestreados. El muestreo ocurre cuando la conexión incluye una gran
cantidad de dimensiones o de datos. Consulte la documentación de Google Analytics para aprender más
acerca de cómo el muestreo afecta los resultados de su informe".
Si se toman muestras de sus datos, es importante saberlo porque agregar ciertos conjuntos de muestra
de datos puede conducir a inferencias muy sesgadas e imprecisas. Por ejemplo, suponga que agrega un
conjunto de muestra de datos que describe una categoría inusual de sus datos. Las inferencias basadas
en ese conjunto de muestra agregado pueden estar sesgadas por haber un número insuficiente de
elementos muestrales en esa categoría. Para crear vistas de GA que le permitan hacer inferencias
precisas sobre los datos, asegúrese de contar con una muestra lo suficientemente grande para la
categoría que le interesa. El tamaño de muestra mínimo recomendado es de 30.
Para obtener información sobre cómo ajustar el tamaño de muestra de GA y aprender más acerca de
la técnica de muestreo de GA, consulte la documentación de GA:
https://support.google.com/analytics/answer/1042498?hl=es
Para evitar el muestreo se puede proceder de dos maneras:
Ejecute varios informes de GA en el nivel de sesión o de resultado para dividir los datos en partes
no muestreadas. Después, descargue los datos en un archivo de Excel y use el motor de extracción
de Tableau para "agregar los datos del archivo..." a fin de reensamblarlos en un único conjunto.
Cambie su cuenta de GA por una cuenta Premium e incremente, así, la cantidad de registros que se
pueden incluir en un informe. Esto facilitará mucho la separación de los datos en distintas partes
para el análisis. Para el futuro, Google anunció que permitirá a los clientes Premium de GA exportar
sus datos de nivel de sesión o de resultado a Google BigQuery para un análisis más profundo. Este
sería un enfoque mucho más sencillo, ya que Tableau se puede conectar directamente a BigQuery.
Por último, tenga en cuenta que la API que Tableau usa para hacer consultas a GA limita la consulta a un
máximo de 7 dimensiones y 10 medidas.
Servidor de datos Otra forma de conectarse a fuentes de datos es mediante el servidor de datos de Tableau Server, aunque este no
sea exactamente una fuente de datos. El servidor de datos admite tanto conexiones en vivo como extracciones
de datos y proporciona varias ventajas en comparación con las conexiones de datos independientes:
21
Dado que los metadatos se almacenan de manera centralizada en Tableau Server, varios libros de
trabajo y varios autores o analistas pueden compartirlos. Los libros de trabajo conservan una
referencia a la definición de los metadatos centralizados y, cada vez que se abren, controlan si se
hicieron cambios. En caso afirmativo, se pide al usuario que actualice la copia integrada en el
libro de trabajo. Esto significa que los cambios de lógica de negocios solo deben realizarse en un
lugar y pueden propagarse a todos los libros de trabajo dependientes.
Si la fuente de datos es una extracción de datos, se puede usar en múltiples libros de trabajo. Sin
el servidor de datos, cada libro de trabajo tendrá su propia copia local de la extracción. Esto
reduce la cantidad de copias redundantes que, a su vez, reduce el espacio de almacenamiento
necesario en el servidor y los procesos de actualización de copias.
Si la fuente de datos es una conexión en vivo, no es necesario instalar sus controladores en todas
las computadoras, solo deben instalarse en Tableau Server. El servidor de datos actúa como
proxy para las consultas de Tableau Desktop.
Extracciones Hasta ahora hemos analizado técnicas para mejorar el rendimiento de las conexiones de datos en las
que los datos permanecen en su formato original. Estas conexiones se denominan conexiones de datos
en vivo, y, en estos casos, dependemos de la plataforma de la fuente de datos respecto a rendimiento y
funcionalidad. Para mejorar el rendimiento de las conexiones en vivo, generalmente es necesario hacer
cambios a la fuente de datos, y muchos clientes no pueden hacerlos.
Una alternativa disponible para todos los usuarios es aprovechar el veloz motor de Tableau y hacer una
extracción de datos de Tableau a partir del sistema de datos de origen. Esta extracción:
Es una memoria caché de datos persistente que se graba en el disco y puede reproducirse.
Es un almacén de datos en columnas (un formato en el que los datos están optimizados para
realizar consultas para análisis).
Está completamente desconectada de la base de datos durante la consulta; de hecho, la
extracción reemplaza la conexión de datos en vivo.
Es actualizable, mediante la generación de una nueva extracción o la incorporación progresiva de
filas de datos a una extracción existente.
Reconoce la arquitectura (a diferencia de la mayoría de las tecnologías en memoria, no se ve
restringida por la cantidad de RAM física disponible).
Es portátil (las extracciones se almacenan como archivos, por lo que pueden copiarse en un disco duro
local o usarse cuando el usuario no está conectado a la red empresarial. También pueden usarse para
insertar datos en libros de trabajo empaquetados que se distribuyan para su uso con Tableau Reader).
Suelen ser más rápidas que la conexión de datos en vivo subyacente.
Tom Brown de The Information Lab escribió un artículo excelente donde explica distintos casos de uso
en los que las extracciones otorgan beneficios (asegúrese de leer también los comentarios para conocer
más ejemplos de otros usuarios):
http://www.theinformationlab.co.uk/2011/01/20/tableau-extracts-what-why-how-etc/
22
Nota: Las extracciones no reemplazan los almacenes de datos, sino que los complementan. Aunque pueden
usarse para recopilar y agregar datos a lo largo del tiempo (p. ej., agregar datos progresivamente en función
de un ciclo periódico), esto debe tomarse como una solución táctica, no a largo plazo. Las actualizaciones
progresivas no admiten acciones de actualización o eliminación de registros que ya se hayan procesado
(para cambiar estos registros se debe volver a cargar la extracción por completo).
Por último, no se pueden crear extracciones de fuentes de datos OLAP, como SQL Server, Analysis
Services u Oracle Essbase. Sin embargo, en Tableau 8.1 incorporamos la capacidad de crear extracciones
de SAP BW (consulte la sección pertinente más arriba).
Cuándo usar extracciones y cuándo usar conexiones en vivo
Como en todos los ámbitos, hay un momento y un lugar para las extracciones de datos. Las siguientes
son algunas situaciones en las que las extracciones pueden resultar beneficiosas:
Lentitud en la ejecución de consultas: si su sistema de datos de origen tarda en procesar las
consultas que genera Tableau Desktop, crear una extracción puede ser una manera sencilla de
mejorar el rendimiento. El formato de los datos extraídos está diseñado intrínsecamente para
proporcionar una respuesta rápida a las consultas de análisis, por lo que, en este caso, se puede
pensar en la extracción como una memoria caché de aceleración de consultas. Para algunos tipos
de conexión, esta es una práctica recomendada (p. ej., archivos de texto grandes, conexiones SQL
personalizadas), y algunas fuentes solo funcionan con este modelo (consulte la sección sobre
fuentes de datos en nube).
Análisis sin conexión: si necesita trabajar con los datos cuando la fuente de datos original no está
disponible (p. ej. está desconectado de la red cuando viaja o trabaja desde su casa). Las extracciones
de datos persisten como los archivos y pueden copiarse fácilmente en dispositivos portátiles, como
laptops. Es muy sencillo alternar entre una extracción y una conexión en vivo si entra y sale de la red.
Libros de trabajo empaquetados para Tableau Reader, Online o Public: si planea compartir sus
libros de trabajo para que otros usuarios puedan abrirlos en Tableau Reader o si planea
publicarlos en Tableau Online o Tableau Public, deberá insertar los datos en un archivo de libro
de trabajo empaquetado. Incluso si el libro de trabajo usa fuentes de datos que también puedan
insertarse (es decir, fuentes de datos de archivos), las extracciones de datos proporcionan,
intrínsecamente, un alto nivel de compresión de datos, de modo que el libro de trabajo
empaquetado resultante es notoriamente más pequeño.
Funcionalidad adicional: algunas fuentes de datos (p. ej., fuentes de datos de archivos mediante el
controlador MS JET) no admiten ciertas funciones de Tableau Desktop (p. ej., mediana, recuento de
valores diferenciados, jerarquización, agregaciones de percentiles, operaciones de entrada y salida de
conjuntos, etc.). Una manera sencilla de habilitar estas funciones es extraer los datos.
Seguridad de datos: si desea compartir un subconjunto de los datos del sistema de datos de
origen, puede crear una extracción y ponerla a disposición de otros usuarios. Puede limitar los
campos y las columnas que se incluyen y compartir datos agregados cuando desee que los
usuarios vean valores resumidos, pero no los datos individuales registrados.
Las extracciones son muy eficaces, pero no son soluciones infalibles para todos los problemas. Existen
algunas situaciones en las que el uso de extracciones podría no ser adecuado:
23
Datos en tiempo real: debido a que las extracciones son una foto instantánea de los datos en un
momento específico, no son apropiadas para análisis que requieren datos en tiempo real. Es posible
actualizar automáticamente las extracciones con Tableau Server, y muchos clientes lo hacen varias
veces al día, pero el verdadero acceso a los datos en tiempo real requiere una conexión en vivo.
Datos inmensos: si tiene que trabajar con una cantidad inmensa de datos (la definición de
"inmensa" depende del usuario, pero generalmente será de millones o miles de millones de
registros), extraerlos puede no ser práctico. El archivo de extracción resultante puede ser
extremadamente grande o el proceso de extracción puede llevar muchísimas horas. Pero hay un
par de excepciones a esta regla. Si tiene un conjunto de datos de origen inmenso, pero va a
trabajar con un subconjunto filtrado, muestreado o agregado de esos datos, usar una extracción
puede ser una excelente idea. En términos generales, el motor de extracción de Tableau está
diseñado para funcionar bien con hasta unos cientos de millones de registros, pero esta cantidad
se verá afectada por la forma y la cardinalidad de sus datos.
Funciones de paso de SQL en bruto: si su libro de trabajo usa funciones de paso, estas no
responderán con una extracción de datos.
Seguridad eficaz a nivel de usuario: si tiene que proporcionar seguridad eficaz a nivel de usuario,
debe implementarla en la fuente de datos. Si se aplicaron filtros a nivel de usuario en el libro de
trabajo, los usuarios pueden quitarlos si se les otorga acceso a todos los datos de la extracción.
La excepción a esta regla sucede cuando la extracción se publica en Tableau Server con filtros
definidos para la fuente de datos y otros usuarios acceden a la extracción mediante el servidor de
datos. Nota: Deberá garantizar que se revoquen los permisos de descarga de los usuarios para
impedir que ellos eludan los filtros establecidos.
Creación de extracciones
Esta tarea es sencilla si se usa Tableau Desktop. Después de conectarse a sus datos, vaya al menú Datos
y haga clic en Extraer datos, luego, acepte las opciones predeterminadas del cuadro de diálogo
(volveremos a tratar este tema más adelante). Tableau le pedirá que especifique dónde quiere guardar
la extracción, elija el lugar en el que desee guardar el archivo, aunque Tableau probablemente lo dirija a
"My Tableau Repository | Datasources", que también es una ubicación apropiada.
Ahora, espere a que se cree la extracción. El tiempo de espera depende de la tecnología de la base de
datos que use, la velocidad de la red, el volumen de datos, etc.; además, depende de la velocidad y la
capacidad de su estación de trabajo, ya que la creación de una extracción es una tarea que hace uso
intensivo de la memoria y el procesador.
Sabrá que la extracción finalizó cuando vea que el ícono de la fuente de datos cambió y tiene otro ícono de base
de datos detrás, que supuestamente representa una "copia", que es exactamente lo que es una extracción.
24
Tenga en cuenta que la creación inicial de una extracción se hace siempre en Tableau Desktop o
mediante la API de extracción de datos y, por lo tanto, ocurre en la estación de trabajo. Deberá
asegurarse de que su estación de trabajo tenga suficiente capacidad para completar la tarea. La creación
de extracciones usa recursos de todos los tipos (CPU, RAM, almacenamiento en disco, E/S de la red),
y procesar grandes volúmenes de datos en una computadora pequeña puede generar errores si
cualquiera de ellos se agota. Se recomienda hacer extracciones grandes en una estación de trabajo
adecuada (CPU rápida con múltiples núcleos, mucha RAM, E/S rápidas, etc.).
El proceso de creación de extracciones requiere espacio del disco temporal para guardar archivos de
trabajo; en Tableau 8.1 y versiones anteriores se puede necesitar hasta el cuadrado del archivo de
extracción resultante (p. ej., una extracción de 100 MB puede requerir varios GB de espacio temporal),
pero en Tableau 8.2 esto se redujo notoriamente, y el proceso ahora solo necesita el doble o menos del
tamaño del archivo de extracción final. Este espacio de trabajo se encuentra en el directorio
especificado por la variable de entorno TEMP (usualmente C:\WINDOWS\TEMP o
C:\Users\USERNAME\AppData\Local\Temp). Si esta unidad no es lo suficientemente grande, dirija la
variable de entorno a una ubicación con más espacio.
Si es imposible (o no es práctico) llevar a cabo un proceso de extracción inicial en una estación de
trabajo, se puede hacer lo siguiente para crear una extracción vacía que después se publicará en Tableau
Server. Cree un campo calculado que incluya DateTrunc(“minute”, now()). A continuación, agréguelo
a los filtros extraídos y excluya el único valor que muestra (hágalo rápido porque después de un minuto
el filtro pierde validez). Si necesita más tiempo, amplíe el intervalo de publicación (p. ej., 5 o 10 minutos,
o una hora si la necesita). Esto creará una extracción vacía en su escritorio. Cuando la publique en el
servidor y active el programa de actualización, llenará toda la extracción, ya que la marca de tiempo que
excluimos ya no es la misma.
25
Extracciones agregadas
El uso de extracciones agregadas siempre mejora el rendimiento. Incluso si trabaja en Teradata o Vertica
con una enorme cantidad de datos, la extracción puede implicar mejoras, siempre que los datos se agreguen
y filtren adecuadamente. Por ejemplo, puede filtrar los datos si solo le interesan los más recientes.
Puede definir la extracción con antelación eligiendo los campos que desee y marcando la casilla de
verificación "Agregar datos para todas las dimensiones visibles" en el cuadro de diálogo Extraer datos de
Tableau Desktop. Otra opción, después de hacer el análisis y crear el dashboard, cuando esté listo para
publicar, es volver al cuadro de diálogo Extraer datos y hacer clic en el botón Ocultar todos los campos
sin usar. Entonces, al extraer los datos se obtiene el mínimo absoluto necesario para crear la vista. La
gente acostumbra usar esa configuración para su vista de resumen. Y en otra página del libro de trabajo
se puede usar un nivel de detalle inferior, pero una extracción más grande. Como filtró los datos, esto
debería funcionar bien. Puede repetir este procedimiento hasta que se conecte con un sistema en vivo
del servidor. Los sistemas en vivo son buenos para identificar conjuntos pequeños de filas. De este
modo, puede hacer combinaciones y agregaciones en diferentes niveles para resolver casi cualquier
problema de rendimiento y obtener los resultados lo más rápido posible. Como Tableau hace un uso
eficaz de la memoria, mejorar el rendimiento de esta manera suele ser relativamente fácil y permite
ejecutar distintas extracciones al mismo tiempo.
26
También puede extraer un subconjunto de datos: un subconjunto filtrado (p. ej., un mes de datos) o una
muestra aleatoria de los datos. Así tendrá la oportunidad de crear contenido de análisis, y, cuando esté
listo para aplicar todo el poder de Tableau al conjunto de datos completo, solo tiene que deseleccionar
el elemento de menú Usar extracción.
27
Optimización de extracciones
Tableau Server no solo optimiza las columnas físicas de la base de datos, sino también las columnas
adicionales creadas en Tableau. Estas columnas incluyen los resultados de cálculos determinísticos, como
la manipulación y la concatenación de cadenas, en los que el resultado, los grupos y los conjuntos nunca
cambiarán. Los resultados de los cálculos no determinísticos, como los que incluyen parámetros y
agregaciones (como sumas o promedios) que se calculan al momento de ejecución, no se pueden almacenar.
Un usuario puede actualizar una extracción después de agregar solo dos filas de datos y notar que el
tamaño de la extracción creció de 100 MB a 120 MB. Este incremento de tamaño se debe a que para la
optimización se crean columnas adicionales con valores de campos calculados porque es más barato
almacenar datos en el disco que recalcularlos cada vez que se necesitan.
Algo a tener en cuenta es que si hace copias duplicadas de una conexión en una extracción de datos, debe
asegurarse de que todos los campos calculados existan en la conexión que seleccione para las opciones
Optimizar y Actualizar, de lo contrario Tableau no mostrará campos que considere en desuso. Un buen método
es definir todos los campos calculados de la fuente de datos primaria y copiarlos, según sea necesario, en las
demás conexiones y solamente actualizar y optimizar la extracción de la fuente de datos primaria.
Actualización de extracciones
En Tableau Desktop, para actualizar una extracción, se hace una selección en el menú (menú Datos >
[su fuente de datos] > Extraer > Actualizar), que actualiza los datos y agrega cualquier fila nueva. Pero en
Tableau Server, durante o después del proceso de publicación, se puede adjuntar un programa definido
por un administrador para actualizar la extracción automáticamente. El incremento más pequeño
28
permitido para el programa es de 15 minutos; el programa puede consistir en hacer una actualización a
la misma hora todos los días, las semanas, etc. Puede establecer una "ventana móvil" para actualizar
continuamente los datos y ver solo los más recientes.
Nota: Si el usuario desea actualizar sus datos con mayor frecuencia que cada 15 minutos, probablemente
debería conectarse a datos activos o establecer una base de datos de informes sincronizados.
Puede elegir dos programas de actualización para una misma extracción:
Una actualización incremental solo agrega filas y no incluye cambios de las filas existentes.
Una actualización completa descarta la extracción vigente y genera una nueva a partir de la
fuente de datos.
¿Qué sucede si la actualización tarda más que el incremento?
Por ejemplo, se establece un programa para actualizar los datos cada hora, pero la cantidad de datos es tan
grande que la actualización lleva una hora y media. Sorprendentemente, esta situación podría ser provechosa.
Una actualización comienza a la 1:00 y acaba a las 2:30.
La siguiente actualización comienza a las 2:00 y acaba a las 3:30.
La siguiente actualización comienza a las 3:00 y acaba a las 4:30.
A la 1:00 los usuarios trabajan con datos que tienen una hora y media de antigüedad. Si esperara hasta
que la actualización de la 1:00 acabara a las 2:30 para iniciar otra actualización, la segunda actualización
no estaría completa hasta las 4:00. Pero con las actualizaciones superpuestas, hay datos nuevos
disponibles cada hora, a las 2:30, las 3:30 y las 4:30, en vez de cada hora y media a las 2:30, las 4:00 y las
5:30. Cuando acaba una actualización, todas las solicitudes se dirigen a esa versión de la extracción.
Las pantallas de mantenimiento muestran qué tareas de fondo se están ejecutando, además de las que
se ejecutaron durante las últimas 12 horas. Se usa codificación por colores para mostrar el estado de
esas tareas. Las pantallas de mantenimiento están disponibles para los administradores y, con los
permisos adecuados, para algunos usuarios, que pueden estar autorizados a iniciar una actualización ad
hoc de una extracción. Además, por ejemplo, si se va a cargar una base de datos, puede establecer un
desencadenador para que inicie una extracción después de que la base de datos se haya cargado.
29
También puede actualizar un libro de trabajo de manera incremental o completa con la herramienta de línea
de comando Tabcmd si usa Tableau Server o la línea de comando Tableau.exe si usa Tableau Desktop. Si
tiene requisitos de programación complicados, puede invocarlos desde una herramienta de programación
externa, como el Programador de tareas de Windows. Este enfoque es necesario si desea un ciclo de
actualización más corto que el mínimo de 15 minutos permitido en la interfaz de Tableau Server.
Puede establecer que las actualizaciones se basen en un programa. O puede optar por deshabilitar el
programa e iniciar las actualizaciones manualmente cuando lo desee.
30
Parte 3: ¿Es la consulta? Usted revisó la conexión de datos y se aseguró de que respetara las prácticas recomendadas. No
obstante, su rendimiento sigue siendo bajo. El próximo punto de revisión es comprender la consulta
específica (o, lo que es más probable, las consultas específicas) para garantizar que sea óptima.
Comprensión de las consultas En Tableau puede encontrar el texto completo de la consulta en el archivo de registro. La ubicación
predeterminada es C:\Users\<username>\Documents\My Tableau Repository\Logs\log.txt. Este archivo
es bastante extenso, pero la consulta se encuentra entre las etiquetas <QUERY> y </QUERY>:
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: <QUERY protocol='0ec80680'>
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: SELECT [ProductDim].[Product Category]
AS [none:Product Category:nk],
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: [ProductDim].[Product Subcategory] AS
[none:Product Subcategory:nk],
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: SUM([OrdersFact].[Sales]) AS
[sum:Sales:ok]
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: FROM ( ( ( ( [OrdersFact]
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: INNER JOIN [CustomerDim] ON
[OrdersFact].[Customer ID] = [CustomerDim].[Customer ID] )
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: INNER JOIN [DeliveryDim] ON
[OrdersFact].[Delivery ID] = [DeliveryDim].[Delivery ID] )
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: INNER JOIN [LocationDim] ON
[OrdersFact].[Place ID] = [LocationDim].[Place ID] )
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: INNER JOIN [ProductDim] ON
[OrdersFact].[Product ID] = [ProductDim].[Product ID] )
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: INNER JOIN [TimeDim] ON
[OrdersFact].[Date ID] = [TimeDim].[Date ID]
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: WHERE ((Fix(Fix([TimeDim].[Date])) >=
IIF(ISNULL((-2999)),NULL,DATEADD('d',(-2999),IIF(ISNULL(#02/19/2014
12:32:21#),NULL,DATEADD('d', DATEDIFF('d', #01/01/1970#, #02/19/2014
12:32:21#), #01/01/1970#))))) AND (Fix(Fix([TimeDim].[Date])) <
IIF(ISNULL(1),NULL,DATEADD('d',1,IIF(ISNULL(#02/19/2014
12:32:21#),NULL,DATEADD('d', DATEDIFF('d', #01/01/1970#, #02/19/2014
12:32:21#), #01/01/1970#))))))
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: GROUP BY [ProductDim].[Product
Category],
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: [ProductDim].[Product Subcategory]
2014-02-19 12:32:21.574 (-,-,-,-) 16a8: </QUERY>
Si los busca en Tableau Server, los archivos de registro se encuentran en
C:\ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Logs.
Registros del rendimiento Otro elemento para entender el rendimiento de un libro de trabajo es la función de registro del
rendimiento de Tableau Desktop y Server. Esta función se habilita en el menú Ayuda:
31
Comience el registro del rendimiento y, después, abra su libro de trabajo. Interactúe con él como si
usted fuera un usuario final y, cuando sienta que recopiló suficientes datos, vuelva al menú Ayuda y
detenga el registro. Se abrirá otra ventana de Tableau Desktop con los datos recopilados:
Ahora puede identificar las acciones del libro de trabajo que llevan más tiempo; por ejemplo, en la imagen de
arriba, una de las consultas de la página "Hoja 1" en el dashboard "Un buen diseño" tarda 27 segundos en
llevarse a cabo. Si hace clic en la barra, verá el texto de la consulta que se está ejecutando.
Puede usar esta información para identificar las secciones del libro de trabajo que más se presten a
revisión, es decir, dónde puede obtener la mejora más significativa con respecto al tiempo que emplea.
32
Puede encontrar más información sobre la interpretación de estos registros en el siguiente enlace:
http://onlinehelp.tableausoftware.com/v8.1/server/es-es/perf_record_interpret_server.htm
Selección de uniones Cuando se unen varias tablas en una fuente de datos, Tableau tiene una función estupenda (y, generalmente,
invisible para el usuario) llamada Selección de uniones. Dado que se debe destinar tiempo y dinero a
procesar las uniones en el servidor de la base de datos, no se recomienda enumerar cada unión que se
declaró en la fuente de datos todo el tiempo. La selección de uniones nos permite hacer consultas solo sobre
las tablas relevantes, en lugar de hacerlas sobre todas las tablas definidas en una unión.
Considere la siguiente situación en la que se unieron varias tablas en un esquema de estrella pequeño:
Con la selección de uniones, Tableau genera la siguiente consulta:
SELECT [ProductDim].[Product Category], SUM([OrdersFact].[Sales])
FROM [dbo].[OrdersFact] [OrdersFact]
INNER JOIN [dbo].[ProductDim] [ProductDim]
ON ([OrdersFact].[Product ID] = [ProductDim].[Product ID])
GROUP BY [ProductDim].[Product Category]
Sin ella, Tableau genera una consulta mucho menos eficaz:
SELECT [ProductDim].[Product Category], SUM([OrdersFact].[Sales])
FROM [dbo].[OrdersFact] [OrdersFact]
INNER JOIN [dbo].[CustomerDim] [CustomerDim]
ON ([OrdersFact].[Customer ID] = [CustomerDim].[Customer ID])
INNER JOIN [dbo].[DeliveryDim] [DeliveryDim]
ON ([OrdersFact].[Delivery ID] = [DeliveryDim].[Delivery ID])
INNER JOIN [dbo].[LocationDim] [LocationDim]
ON ([OrdersFact].[Place ID] = [LocationDim].[Place ID])
INNER JOIN [dbo].[TimeDim] [TimeDim]
33
ON ([OrdersFact].[Date ID] = [TimeDim].[Date ID])
INNER JOIN [dbo].[ProductDim] [ProductDim]
ON ([OrdersFact].[Product ID] = [ProductDim].[Product ID])
GROUP BY [ProductDim].[Product Category]
Todas las tablas de dimensiones deben unirse para garantizar que se calculen las sumas de medidas
correctas desde el principio. Por ejemplo, si nuestra tabla de hechos contiene datos del período 2008-
2012, pero la tabla de dimensiones de tiempo solo tiene valores del intervalo 2010-2012, el resultado de
SUM([Sales]) posiblemente cambie cuando se incluya la tabla de tiempo.
En versiones previas a Tableau 8.1, la selección de uniones solo ocurre si se cumplen las reglas de
integridad de la referencia en el DBMS de origen: esto suele denominarse integridad referencial "dura".
Sin embargo, muchos clientes tienen fuentes de datos en las que la integridad referencial se cumple en
la capa de la aplicación o mediante un proceso de ETL: esto se conoce como integridad referencial
"suave". En Tableau 8.1, se introdujo una nueva función que permite a los usuarios comunicarle a
Tableau que se implementó la integridad referencial suave y que es seguro usar la selección de uniones.
Para obtener más información, consulte la siguiente serie de artículos de Russell Christopher en su blog
Tableau Love:
http://tableaulove.tumblr.com/post/11692301750/what-i-learned-about-tableau-join-culling-
over-summer
http://tableaulove.tumblr.com/post/62447366098/what-i-learned-about-tableau-join-culling-
over-fall
Combinación Al decidir entre la unión o la combinación de tablas de datos en Tableau, considere de dónde vienen los
datos, la cantidad de conexiones de datos y la cantidad de registros que hay en los datos.
Si el libro de trabajo usa datos de más de una fuente de datos, debe combinar los datos o establecer un
sistema de base de datos federado. Si el libro de trabajo usa dos conexiones de la misma fuente de
datos, generalmente se prefiere unir las tablas de datos, ya que esto puede mejorar el rendimiento y el
34
control de filtros. Sin embargo, existen algunas situaciones en las que la unión de tablas de datos podría
no funcionar tan bien como la combinación de datos. En estas dos situaciones normales, la combinación
de datos puede funcionar mejor:
Si tiene varias conexiones de datos grandes y las consultas sobre ellas llevan mucho tiempo, el uso de
uniones puede aumentar considerablemente el tiempo de las consultas. Una mejor opción sería agregar
las tablas y combinar los datos en la agregación. Por ejemplo, puede agregar datos por año, en vez de
fecha, o por tipo de producto, en vez de nombre del producto. Para ver un ejemplo, consulte el artículo
Data Blending with Summarized Data (Combinación de datos con datos resumidos).
Si desea ver tanto el resumen de un cálculo como el detalle en la misma vista, seleccione Datos >
Conexión de datos > Duplicar para combinar los datos a fin de que se comuniquen entre dos
conexiones de datos. Para obtener más información, consulte el artículo Showing Summary and
Detail Together (Vista de resumen y detalle juntos).
El siguiente artículo presenta distintos ejemplos de situaciones en las que le conviene usar una unión y
situaciones en las que le conviene usar la combinación de datos:
http://kb.tableausoftware.com/articles/knowledgebase/join-vs-relationship?lang=es-es
Si opta por la combinación, uno de los factores principales que influyen sobre el rendimiento de esta no
es la cantidad de registros de cada fuente de datos sino la cardinalidad de los campos de combinación
que vinculan los dos conjuntos de datos. Cuando se usa la combinación, se hacen las consultas sobre
ambas fuentes de datos en el nivel de los campos vinculantes y, después, se fusionan los resultados de
ambas consultas en memoria.
Si hay muchos valores únicos, podría necesitarse una gran cantidad de memoria. El lanzamiento de
Tableau 8.1 para 64 bits permitirá a los usuarios combinar datos más complejos (más valores únicos) sin
agotar la memoria, pero es probable que estos casos sigan requiriendo un largo tiempo de procesamiento.
35
Lo que se recomienda para la combinación, en base a las mejores prácticas, es evitar combinar
dimensiones con grandes cantidades de valores únicos (p. ej., Id. de pedido, Id. de cliente, fecha/hora
exacta, etc.).
Grupos y alias primarios
Si tiene la necesidad de hacer combinaciones entre dos fuentes de datos porque una contiene los
registros de "hechos" y la otra contiene atributos dimensionales, podría mejorarse el rendimiento
creando un grupo o alias primario. Para los siguientes ejemplos, considere estas tres tablas:
Los grupos primarios son útiles cuando la fuente de datos secundaria contiene un atributo en el que
cada valor se asigna a varios de los miembros de dimensiones de la fuente de datos primaria. Asuma que
lo que nos interesa generar con los datos de arriba es esto:
Podríamos crearlo mediante la combinación, pero, como ya mencionamos, esto resultaría en un
funcionamiento muy lento si hubiera una gran cantidad de Id.:
36
Si hace clic con el botón derecho en el campo Grupo y selecciona Crear grupo primario, Tableau creará
un objeto de grupo en la fuente de datos primaria que asigna el campo de vinculación (en este caso, Id.)
a la dimensión seleccionada de la fuente de datos secundaria (en este caso, Grupo).
Ahora podemos crear esta tabla sin la necesidad de una combinación:
37
Los alias primarios son útiles cuando la fuente de datos secundaria contiene un atributo en el que cada
valor se asigna a un único valor de los miembros de dimensiones de la fuente de datos primaria. Asuma
que lo que nos interesa generar con los datos de arriba es esto:
Podríamos crearlo mediante la combinación entre ambas fuentes de datos, pero, como ya
mencionamos, esto resultaría en un funcionamiento muy lento si hubiera una gran cantidad de Id.:
38
Si hacemos clic con el botón derecho en el campo Nombre y seleccionamos Editar alias primarios,
podemos hacer una asignación por única vez del campo Nombre al campo Id. como valores de alias:
Entonces, podemos crear la visualización deseada sin ninguna combinación, lo que será más rápido:
39
Tenga en cuenta que tanto los grupos como los alias primarios no son dinámicos y deberán actualizarse si los
datos cambian. Por lo tanto, no son una solución excelente para los datos que se actualizan con frecuencia;
pero si necesita una asignación rápida, pueden llegar a evitar la necesidad de combinaciones costosas.
Filtrado El filtrado en Tableau es extremadamente eficaz y descriptivo. No obstante, los filtros ineficaces constituyen
una de las causas más comunes del mal rendimiento de los libros de trabajo y los dashboards. Las secciones
siguientes presentan una serie de prácticas recomendadas para trabajar con filtros.
Nota: La eficacia de los filtros se ve drásticamente afectada por la presencia y el mantenimiento de
índices en la fuente de datos. Consulte la sección previa sobre índices para obtener más detalles.
Filtrado de dimensiones categóricas
Considere la siguiente visualización, un mapa de Australia con marcas para cada código postal:
40
Podemos filtrar el mapa de diferentes maneras para que solo muestre los códigos postales de Australia
Occidental (los puntos violetas):
Podemos seleccionar todas las marcas de Australia Occidental y conservar solo la selección.
Podemos seleccionar todas las marcas fuera de Australia Occidental y excluir la selección.
Podemos conservar otro atributo, como la dimensión de estado.
Podemos filtrar por rango, en los valores de código postal o los de latitud/longitud.
Discreto
Si implementáramos las primeras dos opciones, la de conservar y la de excluir, descubriríamos que no
son eficaces, de hecho, a veces pueden ser más lentas que el conjunto de datos sin filtros. Esto sucede
porque se expresan como una lista discreta de valores de código postal que el DBMS incluye o excluye
mediante filtros, ya sea con una cláusula WHERE compleja o mediante la unión con la tabla temporal
que se rellenó con la selección. Para un conjunto grande de marcas, esto puede conducir a una consulta
muy costosa de evaluar.
La tercera opción es rápida en este ejemplo porque el filtro resultante (WHERE STATE=”Western
Australia”) es muy sencillo, y la base de datos puede procesarlo eficazmente. Sin embargo, este
enfoque se vuelve menos eficaz a medida que la cantidad de miembros de la dimensión necesarios para
expresar el filtro aumenta y, en última instancia, se acerca al rendimiento de las opciones de lazo y de
conservar.
Por rango
Usar el enfoque de filtrado por rango también permite que la base de datos evalúe una cláusula de filtrado
simple (WHERE POSTCODE >= 6000 AND POSTCODE <= 7000 o WHERE LONGITUDE < 129), lo que resulta en
una ejecución rápida. Pero este enfoque, a diferencia de los filtros en dimensiones relacionadas, no se
vuelve más complejo a medida que se incrementa la cardinalidad de las dimensiones.
Lo que debe concluirse de esto es que los filtros por rango suelen ser más rápidos de evaluar que largas
listas detalladas de valores discretos y, en lo posible, deben usarse antes que las opciones de conservar y
excluir para grandes conjuntos de marcas.
Filtrado de fechas: discreto, por rango, relativo
Los campos de fecha son un tipo especial de dimensión que Tableau a menudo controla de manera
diferente que los datos categóricos estándares. Esto es especialmente verdadero cuando crea filtros de
fecha. Los filtros de fecha son extremadamente comunes y se dividen en tres categorías: filtros de fecha
relativa, que muestran un rango de fechas relativo a un día específico; filtros por rango de fechas, que
muestran un rango definido de fechas discretas; y filtros de fecha discretos, que muestran fechas
individuales que usted haya seleccionado de una lista. Como se muestra en la sección de arriba, el
método usado puede tener un impacto significativo en la eficacia de la consulta resultante.
41
Discreto
Algunas veces, es posible que desee filtrar para incluir fechas individuales específicas o niveles de fecha
completos. Este tipo de filtro se denomina filtro de fecha discreto porque se definen valores discretos en
lugar de un rango. Este tipo de filtro hace que la expresión de fecha se transmita a la base de datos
como un cálculo dinámico:
SELECT [FactSales].[Order Date], SUM([FactSales].[SalesAmount])
FROM [dbo].[FactSales] [FactSales]
WHERE (DATEPART(year,[FactSales].[Order Date]) = 2010)
GROUP BY [FactSales].[Order Date]
En la mayoría de los casos, los optimizadores de consultas evaluarán inteligentemente el cálculo
DATEPART, pero existen ciertas situaciones en las que el uso de filtros de fecha discretos puede resultar
en un rendimiento ineficaz de la consulta. Un ejemplo de esto es hacer una consulta sobre una tabla
particionada con un filtro de fecha discreto en la clave de partición de fecha. Como la tabla no está
particionada según el valor de DATEPART, algunas bases de datos evaluarán el cálculo en todas las
particiones para encontrar registros que concuerden con el criterio, aunque esto no sea necesario.
En este caso, se lograría un rendimiento mucho más alto con un filtro por rango de fechas.
Una manera de optimizar el rendimiento para este tipo de filtros es realizar el cálculo con una extracción
de datos. Primero, cree un campo calculado que implemente la función DATEPART explícitamente. Si
después crea una extracción de datos de Tableau, este campo calculado se materializará como valores
almacenados en la extracción (porque el resultado de la expresión es determinístico). Filtrar el campo
calculado en vez de la expresión dinámica será más rápido porque el valor simplemente se puede
buscar, en vez de calcularse en el momento de consulta.
42
Por rango
Este tipo de filtro se usa cuando se desea especificar un rango de fechas continuas. La siguiente
estructura de consulta se transmite a la base de datos:
SELECT [FactSales].[Order Date], SUM([FactSales].[SalesAmount])
FROM [dbo].[FactSales] [FactSales]
WHERE (([FactSales].[Order Date] >= {ts '2009-01-01 00:00:00'})
AND ([FactSales].[Order Date] <= {ts '2012-12-31 00:00:00'}))
GROUP BY [FactSales].[Order Date]
Este tipo de cláusula WHERE es muy eficaz para los optimizadores de consulta, ya que permite que los
planes de ejecución aprovechen por completo los índices y las particiones. Si experimenta tiempos de
consulta lentos cuando agrega filtros de fecha discretos, considere reemplazarlos por filtros por rango
de fechas y vea si eso funciona.
43
Relativo
Un filtro de fecha relativa le permite definir un rango de fechas que se actualiza sobre la base de la fecha
y la hora en que abre la vista. Por ejemplo, quizás quiere ver las ventas del año a la fecha, todos los
registros de los últimos 30 días o los errores que se cerraron la semana pasada. Los filtros de fecha
relativa también pueden ser relativos respecto de una fecha ancla específica y no de hoy.
SELECT [FactSales].[Order Date], SUM([FactSales].[SalesAmount])
FROM [dbo].[FactSales] [FactSales]
WHERE (([FactSales].[Order Date] >= DATEADD(year,(-2),DATEADD(year,
DATEDIFF(year, 0, {ts '2012-12-16 22:37:51.490'}), 0))) AND
([FactSales].[Order Date] < DATEADD(year,1,DATEADD(year, DATEDIFF(year, 0,
{ts '2012-12-16 22:37:51.490'}), 0))))
GROUP BY [FactSales].[Order Date]
Como puede ver, la cláusula WHERE resultante usa un filtro por rango de fechas, de modo que esta
también es una forma eficaz de filtro de fecha.
Filtros de contexto
De manera predeterminada, todos los filtros que configura en Tableau se calculan de forma
independiente. Es decir, cada filtro accede a todas las filas de su fuente de datos independientemente
de los demás filtros. Sin embargo, puede configurar uno o más filtros como filtros de contexto para la
vista. Puede pensar en ellos como filtros independientes. Cualquier otro filtro que configure se define
como filtro dependiente, porque procesa solo los datos que pasan por los filtros de contexto.
Los filtros de contexto son especialmente útiles para las fuentes de datos relacionales porque se incluye
el conjunto de resultados del filtro en una tabla temporal. Después, esta tabla actúa como una fuente de
datos (más pequeña) independiente para los filtros y las consultas subsiguientes, lo que mejora el
rendimiento cuando se crean vistas de datos.
44
Los filtros de contexto suelen usarse para incrementar el rendimiento. Tenga en cuenta que la mejora
ocurre porque la base de datos asienta los resultados del filtro de contexto en una tabla temporal. La
creación de esta tabla temporal es una actividad costosa para la base de datos, por eso este enfoque se
recomienda cuando:
● El filtro de contexto reduce el tamaño del conjunto de datos de manera significativa (por orden
de magnitud es una buena regla general).
● El usuario no modifica el filtro de contexto con frecuencia (si el filtro cambia, la base de datos
debe volver a calcular y crear la tabla temporal, lo que entorpece el rendimiento).
Un truco útil que aprovecha el comportamiento de los filtros de contexto: se pueden usar para
transformar un conjunto de datos con uniones de tablas complejas en una única tabla denormalizada.
Por ejemplo, considere la siguiente consulta que genera Tableau:
SELECT SUM([OrdersFact].[Sales])
FROM [dbo].[OrdersFact] [OrdersFact]
INNER JOIN [dbo].[CustomerDim] [CustomerDim]
ON ([OrdersFact].[Customer ID] = [CustomerDim].[Customer ID])
INNER JOIN [dbo].[DeliveryDim] [DeliveryDim]
ON ([OrdersFact].[Delivery ID] = [DeliveryDim].[Delivery ID])
INNER JOIN [dbo].[LocationDim] [LocationDim]
ON ([OrdersFact].[Place ID] = [LocationDim].[Place ID])
INNER JOIN [dbo].[ProductDim] [ProductDim]
ON ([OrdersFact].[Product ID] = [ProductDim].[Product ID])
INNER JOIN [dbo].[TimeDim] [TimeDim]
ON ([OrdersFact].[Date ID] = [TimeDim].[Date ID])
WHERE (([LocationDim].[Region] >= 'Africa')
AND ([LocationDim].[Region] <= 'Oceania'))
HAVING (COUNT_BIG(1) > 0)
Colocando un menú contextual en una dimensión que remite todos los miembros de la dimensión,
forzamos a Tableau a materializar la consulta anterior y a asentar los resultados en una tabla temporal.
Entonces, la misma consulta se vuelve a generar de la siguiente manera:
SELECT SUM([#Tableau_3_Context].[Sales])
FROM [#Tableau_3_Context]
HAVING (COUNT_BIG(1) > 0)
Como puede ver, se obtiene una consulta mucho más sencilla para que la base de datos la ejecute y se
logra un proceso más veloz. Esta técnica también podría usarse para optimizar libros de trabajo que
usen conexiones de datos basadas en una instrucción SQL personalizada.
Filtros rápidos
A pesar del nombre, demasiados filtros rápidos, en realidad, lo retrasarán, especialmente si los
configura para que usen "solo valores relevantes" y usted tiene muchas listas discretas. En lugar de
estos, pruebe un enfoque analítico más guiado y use filtros de acciones en un dashboard. Si construye
una vista con una gran cantidad de filtros para hacerla perfectamente personalizable, considere si varios
dashboards con diferentes niveles y temas funcionarían mejor (pista: sí, probablemente lo harían).
45
Enumerados vs. no enumerados
Los filtros rápidos enumerados requieren que Tableau haga consultas a la fuente de datos acerca de
todos los valores de campo posibles antes de que el objeto de filtro rápido pueda generarse. Entre estos
se incluyen:
lista de valores múltiples;
lista de valores individuales;
lista compacta;
barra deslizante;
filtros de medidas;
filtros por rango de fechas.
Por otro lado, los filtros rápidos no enumerados no requieren conocimiento de los valores de campo
posibles. Entre estos se incluyen:
lista de valores personalizada;
coincidencia de comodín;
filtros de fecha relativa;
filtros de fecha de período de navegación.
En consecuencia, los filtros rápidos no enumerados reducen la cantidad de consultas relacionadas con
filtros rápidos que la fuente de datos debe ejecutar. Además, los filtros rápidos no enumerados son más
veloces cuando hay muchos miembros de dimensión para mostrar.
El uso de filtros rápidos no enumerados puede mejorar el rendimiento, pero lo hace a expensas de
contexto visual para el usuario final.
Valores relevantes
Se pueden configurar los filtros rápidos enumerados para que muestren los valores de campo posibles
de tres maneras diferentes:
Todos los valores de la base de datos: cuando selecciona esta opción, se muestran todos los
valores de la base de datos, independientemente de los otros filtros de la vista. No hay necesidad
de que el filtro rápido vuelva a consultar la base de datos cuando hay otros filtros cargados.
Todos los valores en contexto: esta opción solo está disponible cuando tiene filtros de contexto
activos. El filtro rápido mostrará todos los valores en el contexto (es decir, la tabla temporal generada
por el filtro de contexto), independientemente de los demás filtros de la vista. No hay necesidad de
que el filtro rápido vuelva a consultar la base de datos cuando hay otros filtros cargados.
Solo valores relevantes: cuando selecciona esta opción, se consideran otros filtros y se muestran
solo los valores que pasan estos filtros. Por ejemplo, un filtro rápido por estado solo mostrará los
estados orientales cuando se haya configurado un filtro por región. Por lo tanto, el filtro rápido
debe volver a consultar la fuente de datos cuando otros filtros cambian.
46
Como puede ver, la configuración de "solo valores relevantes" puede ser muy útil para ayudar al usuario
a hacer selecciones relevantes, pero puede aumentar significativamente la cantidad de consultas que
deben ejecutarse mientras interactúan con el dashboard. Debe usarse con moderación.
Alternativas a los filtros rápidos
Existen alternativas al uso de filtros rápidos que proporcionan un resultado analítico similar, pero lo
hacen sin la sobrecarga de consultas adicionales.
En lugar de exponer un filtro rápido a los usuarios, puede crear un parámetro y filtrar en función de las
selecciones de los usuarios.
PROS:
Los parámetros no requieren una consulta a la fuente de datos antes de la representación.
Los parámetros, junto con los campos calculados, pueden implementar lógicas más complejas
que las posibles con un filtro de campo simple.
Los parámetros se pueden usar para filtrar varias fuentes de datos (los filtros rápidos solo
operan dentro de una fuente de datos).
CONTRAS:
Los parámetros son valores únicos: no los puede usar si desea que el usuario seleccione varios
valores.
Los parámetros no son dinámicos: la lista de valores se define cuando estos se crean y no se
actualiza en función de los valores del DBMS.
Otra alternativa es usar acciones de filtro entre vistas:
PROS:
Las acciones admiten la selección de múltiples valores, usando lazos visuales o presionando
CTRL o SHIFT.
Las acciones muestran una lista dinámica de valores que se evalúa en el momento de ejecución.
Las acciones se pueden usar para filtrar varias fuentes de datos (los filtros rápidos solo operan
dentro de una fuente de datos).
CONTRAS:
Las acciones de filtro son más complejas de establecer que los filtros rápidos.
Las acciones no tienen la misma interfaz de usuario que los parámetros ni los filtros rápidos,
generalmente requieren más espacio en la pantalla para mostrarse.
La hoja de origen de la acción aún debe hacer las consultas a la fuente de datos, pero se
beneficia del almacenamiento en caché de la canalización de procesamiento de Tableau.
Para saber más sobre las técnicas de diseño alternativas que no dependen en gran medida de los filtros
rápidos, consulte la sección anterior.
47
Filtros de usuarios
Cualquier libro de trabajo que use filtros de usuarios, ya sea mediante el cuadro Crear filtro de
usuarios... o mediante los campos calculados que usan cualquiera de las funciones de usuario
incorporadas, no puede usar cachés de resultados compartidos cuando se implementa en Tableau
Server porque los filtros son exclusivos de los usuarios. Esto puede afectar el rendimiento, ya que:
Todos los libros de trabajo deberán hacer consultas a la fuente de datos subyacente, incluso si
otra sesión de usuario acaba de hacer exactamente la misma consulta. Esto implica más E/S de la
fuente de datos.
Se necesitará más espacio en la memoria caché, ya que cada sesión de usuario creará sus propios
resultados de consulta y caché de modelos. En máquinas con mucha carga, esto puede resultar
en que se borren las memorias caché mientras están en uso, lo que también implica más E/S.
Consulte la sección siguiente sobre el almacenamiento en caché de Tableau Server para conocer más detalles.
48
Parte 4: ¿Son los cálculos? En muchos casos, sus datos de origen no proporcionarán todos los campos que necesite para responder
todas sus consultas. Los campos calculados le ayudarán a crear todas las dimensiones y medidas
necesarias para su análisis.
En un campo calculado puede definir una constante codificada de forma rígida (p. ej., tasa impositiva),
hacer operaciones matemáticas muy simples como restas o multiplicaciones (p. ej., ingresos menos
costos), usar fórmulas matemáticas más complejas, hacer pruebas de lógica (p. ej., IF/THEN, CASE),
hacer conversiones de tipo y mucho más.
Una vez definido, el campo calculado está disponible en todo el libro de trabajo, siempre que las hojas
de trabajo usen la misma fuente de datos. Puede usar campos calculados en su libro de trabajo de la
misma manera que usa dimensiones y medidas de sus datos de origen.
Hay tres tipos de cálculos diferentes en Tableau:
cálculos básicos;
cálculos agregados;
cálculos de tablas.
La Calculation Reference Library (Biblioteca de referencia de cálculos) de Tableau es una excelente
referencia para aprender a realizar cálculos complejos y contiene un foro donde los usuarios comparten
soluciones a problemas comunes:
http://community.tableausoftware.com/community/viz-talk/tableau-community-
library/calculation-reference-library
Cálculos básicos y agregados Los cálculos básicos y los agregados se expresan como parte de la consulta que se envía a la fuente de
datos, y, por lo tanto, la base de datos los resuelve. Por ejemplo:
SELECT DATEPART(year,[TimeDim].[Date]), SUM([OrdersFact].[Sales])
FROM [dbo].[OrdersFact] [OrdersFact]
INNER JOIN [dbo].[TimeDim] [TimeDim]
ON ([OrdersFact].[Date ID] = [TimeDim].[Date ID])
GROUP BY DATEPART(year,[TimeDim].[Date])
El cálculo de YEAR es básico, y el de SUM(SALES) es agregado.
En general, los cálculos básicos y los agregados escalan muy bien, y existen muchas técnicas de ajuste de
bases de datos que pueden emplearse para mejorar su rendimiento.
Cálculos de tablas Por otro lado, la base de datos no ejecuta los cálculos de tablas, sino que lo hace Tableau en los resultados de
consulta que se presentan. Mientras que esto implica más trabajo para Tableau, este trabajo suele realizarse
sobre un conjunto de registros mucho más pequeño que el que se encuentra en la fuente de datos original.
49
Si tiene problemas con el rendimiento de los cálculos de tablas (posiblemente porque el conjunto de
resultados que se presenta a Tableau es muy grande), considere enviar algunos aspectos de los cálculos
a la capa de la fuente de datos. Una forma de hacerlo es mediante una extracción de datos agregada.
Imagine que usted desea conocer el promedio semanal del total de ventas diarias en varias tiendas.
Puede hacerlo con un cálculo de tablas usando:
WINDOW_AVG(SUM([Sales])
Sin embargo, si la cantidad de días o de tiendas es muy grande, este cálculo puede ser lento. Para enviar
SUM([Sales]) a la capa de datos, cree una extracción agregada que resuma la dimensión de fecha al nivel del día.
Luego, el cálculo se puede hacer simplemente con AVG([Sales]), ya que la extracción ya calculó los totales diarios.
Algunos cálculos de tablas son muy costosos para realizarse en Tableau. De acuerdo con la siguiente
publicación de Richard Leeke en un blog, para los populares cálculos de tablas WINDOW_XXX y TOTAL, el
tiempo de ejecución aumenta proporcionalmente al cuadrado del número de filas de la partición que se
analiza. Esto hace que estas funciones se ejecuten muy lentamente para grandes cantidades de registros.
http://www.clearlyandsimply.com/clearly_and_simply/2011/01/another-look-at-site-catchment-
analysis-with-tableau-6-part-3.html
En esta publicación, Richard ofrece algunas alternativas para limitar la cantidad de filas que procesa el
motor de cálculo de tablas. Por ejemplo, el cálculo WINDOW_AVG mencionado puede escribirse así:
IF FIRST()==0 THEN WINDOW_AVG(SUM([Sales]),0,IIF(FIRST()==0,LAST(),0)) END
Este cambio puede implicar mejoras significativas (en uno de los ejemplos que Richard presenta, él
redujo el tiempo necesario para generar una vista ¡de 3 horas a 5 segundos!).
Cálculos vs. características nativas A veces, los usuarios crean campos calculados para llevar a cabo funciones que pueden realizarse
fácilmente con características nativas de Tableau. Por ejemplo:
Para agrupar miembros de dimensiones, considere usar grupos.
Para agrupar valores de medidas, considere usar agrupaciones.
Para cambiar los valores mostrados de miembros de dimensiones, considere usar alias.
Esto no es siempre posible (p. ej., puede necesitar agrupaciones de ancho variable, que no son posibles
con agrupaciones básicas), pero considere usar las características nativas cuando lo sea. Usarlas suele
ser más eficaz que hacer cálculos manuales, y, a medida que nuestros desarrolladores continúen
mejorando el rendimiento de Tableau, usted se beneficiará de sus esfuerzos.
Impacto de los tipos de datos Cuando se crean campos calculados, es importante entender que el tipo de datos tiene un impacto
significativo en la velocidad de los cálculos. Como regla general:
Los enteros son más rápidos que los booleanos, y ambos son mucho más rápidos que las cadenas.
50
Los cálculos de cadenas son muy lentos, suele haber 10-100 instrucciones básicas que deben ejecutarse
para cada cálculo. En comparación, los cálculos numéricos y los booleanos son muy eficaces.
Estas afirmaciones no solo son verdaderas para el motor de cálculo de Tableau, sino que lo son para la
mayoría de las bases de datos. Como los cálculos básicos y los agregados se envían a la base de datos, si
se expresan de manera numérica, en vez de con la lógica de cadenas, se ejecutarán mucho más rápido.
Técnicas de rendimiento Considere las siguientes técnicas para garantizar que sus cálculos sean lo más eficaces posible:
Uso de booleanos para cálculos de lógica básica Si tiene un cálculo que produce un resultado binario (p. ej., sí/no,
aprobado/reprobado, arriba/abajo), asegúrese de presentar un resultado
booleano, no una cadena. Por ejemplo:
IF [Date]= TODAY() then “Today”
ELSE “Not Today”
END
Esto será lento porque usa cadenas. Una forma más rápida de hacer lo mismo sería con un booleano:
[Date]=Today()
Después, use alias para renombrar los resultados TRUE y FALSE como "Today" (hoy) y "Not today" (no hoy).
Búsqueda de cadenas
Imagine que desea poder mostrar todos los registros en los que el nombre del producto contenga
alguna cadena de búsqueda. Puede usar un parámetro para obtener la cadena de búsqueda del usuario
y, después, crear el siguiente campo calculado:
IF FIND([Product Name],[Product Lookup])>0 THEN [Product Name] ELSE NULL END
Este cálculo es lento y constituye una forma ineficaz de evaluar la relación de contención. Una mejor
manera de hacer esto sería usar la función específica CONTAINS, ya que se convertirá en SQL óptimo
cuando pase a la base de datos:
CONTAINS([Product Name],[Product Lookup])
No obstante, en este caso, la mejor solución sería no usar un campo calculado en absoluto, sino usar un
filtro rápido de concordancia con carácter comodín.
Parámetros para cálculos condicionales
Una técnica popular en Tableau es proporcionar al usuario final un parámetro para que pueda
seleccionar un valor que determinará cómo se realiza un cálculo. Normalmente queremos darle al
usuario opciones fáciles de entender, por lo que creamos el parámetro como un tipo de cadena. Como
hemos mencionado, los cálculos numéricos son mucho más rápidos que los cálculos con cadenas, así
que aproveche la función "mostrar como" de los parámetros para mostrar etiquetas de texto, pero
tenga valores enteros subyacentes para la lógica de cálculo.
Como ejemplo, imagine que desea permitir al usuario final controlar el nivel de agregación de fecha que
se muestra en la vista mediante la selección a partir de una lista de valores posibles. Muchas personas
crearían un parámetro de cadena:
51
Valor Mostrar como
Año Año
Trimestre Trimestre
Mes Mes
Semana Semana
Día Día
Luego, lo usarían en un cálculo como este:
IF [Parameters].[Date Part Picker]="Year"
THEN DATEPART('year',[Order Date])
ELSEIF [Parameters].[Date Part Picker]="Quarter"
THEN DATEPART('quarter',[Date])
…
ELSE NULL END
Un parámetro más eficaz sería del tipo entero con etiquetas de texto, como este:
Valor Mostrar como
1 Año
2 Trimestre
3 Mes
4 Semana
5 Día
Entonces, el cálculo sería del siguiente modo (note que las comparaciones son numéricas en vez de serlo
de cadenas):
IF [Parameters].[Date Part Picker]=1
THEN DATEPART('year',[Order Date])
ELSEIF [Parameters].[Date Part Picker]=2
THEN DATEPART('quarter',[Order Date])
..
ELSE NULL END
DATO ADICIONAL: Para este problema específico, existe una manera incluso más rápida de hacer el
cálculo. Usando el parámetro original basado en cadena, cree el cálculo así:
DATEPART([Parameters].[Date Part Picker], [Order Date]))
Esto evita todos los elementos de lógica condicional y nos permite simplemente sustituir la cadena
DATEPART directamente en el cálculo. Esto da como resultado el SQL más óptimo de todas las opciones.
Conversión de fechas
Frecuentemente los usuarios tienen datos de fechas que no están almacenados en formato de fecha
nativo, por ejemplo, pueden ser cadenas o marcas de tiempo numéricas. En Tableau 8.1, se introdujo
una nueva función, DateParse(), para facilitar estas conversiones en gran medida. Ahora, simplemente
puede ingresar una cadena de formato:
DATEPARSE(“yyyyMMdd”, [YYYYMMDD])
52
Tenga en cuenta que, en Tableau 8.1, DateParse() solo se admite en un subconjunto de fuentes de datos:
MySQL;
Oracle;
PostgreSQL;
extracción de datos de Tableau.
Si DateParse() no se admite para su fuente de datos, una técnica alternativa de conversión a fechas
compatibles con Tableau es redistribuir el campo en una cadena de fecha (p. ej., "2012-01-01", note que se
prefieren cadenas ISO, ya que resisten la internacionalización) y, después, incluirlo en la función DATE().
Si los datos originales son campos numéricos, la conversión a una cadena y, después, a una fecha es muy
ineficaz. Es mucho mejor mantener los datos en formato numérico y usar DATEADD() y los valores
literales de fechas para hacer el cálculo.
Por ejemplo, un cálculo lento podría ser convertir un campo numérico con formato ISO:
DATE(LEFT(STR([YYYYMMDD]),4)
+ “-“ + MID(STR([YYYYMMDD]),4,2)
+ “-“ + RIGHT(STR([YYYYMMDD]),2))
Una forma mucho más eficaz de hacer este cálculo es:
DATEADD( 'day', INT([yyyymmdd] )% 100 - 1,
DATEADD( 'month', INT( [yyyymmdd]) % 10000 / 100 - 1,
DATEADD( 'year', INT( [yyyymmdd] ) / 10000 - 1900,
#1900-01-01# ) ) )
Tenga en cuenta que las mejoras de rendimiento pueden ser extraordinarias con grandes conjuntos de
datos. Para una muestra de más de mil millones de registros, el primer cálculo tomó 4 horas, mientras
que el segundo tomó alrededor de un minuto.
Funciones de fecha
Use NOW() solo si necesita el nivel de detalle de marca de tiempo. Use TODAY() para cálculos con nivel
de fecha.
Declaraciones lógicas
Cuando trabaje con declaraciones lógicas complejas, recuerde:
ELSEIF > ELSE IF
Esto sucede porque un IF anidado procesa una segunda declaración IF en vez de procesarse como parte
de la primera. Entonces, este campo calculado:
IF [Region] = "East" and [Customer Segment] = "consumer"
then "East-Consumer"
Else IF [Region] = "East" and Customer Segment] <>"consumer"
then "East-All Others"
END
END
53
se ejecutaría mucho más rápido como:
IF [Region] = "East" and [Customer Segment] = "consumer"
then "East-Consumer"
Elseif [Region] = "East" and [Customer Segment] <>"consumer"
then "East-All Others"
end
pero esto es aún más veloz:
IF [Region] = "East" THEN
IF [Customer Segment] = "consumer" THEN
"East-Consumer"
Else "East-All Others"
END
END
De manera similar, evite las verificaciones de lógica redundante. El siguiente cálculo:
IF [Sales] < 10 Then "Bad"
Elseif [Sales]>= 10 and [Sales] < 30 Then "OK"
Elseif [Sales] >= 30 then "Great"
END
sería más eficaz así:
IF [Sales] < 10 Then "Bad"
Elseif [Sales] >= 30 then "Great"
else "OK"
END
Separación de cálculos básicos y agregados
Cuando use extracciones y agregaciones personalizadas, divida el cálculo en múltiples partes. Coloque los
cálculos del nivel de fila en un campo calculado y el cálculo agregado en un segundo campo calculado.
Luego, las extracciones pueden optimizar (preprocesar y materializar) los cálculos del nivel de fila.
54
Parte 5: ¿Es una cuestión de escritorio vs. servidor? Hay momentos en los que un libro de trabajo funciona bien en evaluaciones de un único usuario, pero,
cuando se implementa en Tableau Server para que lo consuman muchos usuarios, funciona mal. La
siguiente sección identifica áreas en las que las divergencias entre situaciones de uno o más usuarios
pueden marcar una diferencia.
Pautas generales
Use un sistema operativo de 64 bits
Aunque Tableau Server puede ejecutarse en sistemas operativos Microsoft de 32 bits; para obtener el
mejor rendimiento, elija una edición de 64 bits. Con Tableau 8.1, todos los componentes de Tableau
Server se pueden ejecutar como procesos nativos de 64 bits. Esto significa que todos los componentes
pueden controlar mucha más RAM, y nuestras pruebas comparativas iniciales indican que la versión de
64 bits de Tableau escala notoriamente mejor que la versión de 32 bits.
Se recomienda fervientemente a los clientes que actualicen su instalación de Tableau Server a la
versión 8.1 o versiones posteriores e implementen Tableau Server de 64 bits.
Agregue más núcleos y memoria
Independientemente de si ejecuta Tableau Server en una máquina o en varias, la regla general es que
más núcleos de CPU y más RAM le brindarán mejor rendimiento. Asegúrese de cumplir los requisitos
recomendados de hardware y software de Tableau Server y consulte Cuándo agregar trabajadores y
reconfigurar para evaluar si debe agregar máquinas adicionales.
En julio de 2013, hicimos pruebas de escalabilidad de Tableau Server para ayudar a nuestros clientes a
planificar implementaciones grandes. Probamos tres configuraciones de servidor diferentes: uno, dos o
tres servidores en un entorno de prueba de carga dedicado. Probamos dos clases diferentes de informes
con varios grados de complejidad. Intentamos simular usos reales, por lo que cada usuario realizó una
variedad de tareas, incluidas la carga del informe, la realización de una selección, el filtrado de la vista y
la modificación de pestañas. El siguiente documento describe esas pruebas y presenta técnicas para
mejorar el rendimiento de Tableau Server.
http://www.tableausoftware.com/es-es/learn/whitepapers/tableau-server-scalability-explained
Configuración
Programe actualizaciones para horarios de menor consumo
Si el rendimiento del servidor es reducido, use la vista administrativa Tareas de fondo para ver sus
programas de tareas de actualización vigentes. Si puede programar actualizaciones para los horarios de
bajo consumo, hágalo. Si su configuración de hardware lo permite, también puede trasladar los
procesos del componente de segundo plano a un nodo de trabajo dedicado.
Compruebe el límite de tiempo de espera de la sesión VizQL
El límite predeterminado de tiempo de espera de la sesión VizQL es de 30 minutos. Aunque la sesión
VizQL esté inactiva, aún consume memoria y ciclos de CPU. Si puede arreglarse con un límite inferior,
use tabadmin para cambiar la configuración de vizqlserver.session.expiry.timeout.
55
Evalúe su configuración de proceso
Tableau Server se divide en seis componentes diferentes llamados procesos del servidor. Aunque la
configuración predeterminada se diseñó para que funcione en un amplio rango de situaciones, usted
puede modificarla para lograr diferentes objetivos de rendimiento. Específicamente, puede controlar en
qué máquinas se ejecutan los procesos y cuántos procesos se ejecutan. Consulte Mejorar el rendimiento
del servidor para conocer las pautas para las implementaciones de una, dos y tres máquinas.
Monitoreo de Tableau Server Tableau Server viene con varias vistas para administradores, con el fin de ayudar a monitorear la actividad en
Tableau Server. Las vistas se ubican en la tabla Análisis en la página Mantenimiento del servidor:
Puede encontrar más información sobre estas vistas en el siguiente enlace:
http://onlinehelp.tableausoftware.com/current/server/es-es/adminview.htm
Además, puede crear vistas administrativas personalizadas conectándose a la base de datos PostgreSQL
que constituye parte del repositorio de Tableau. Puede encontrar instrucciones aquí:
http://onlinehelp.tableausoftware.com/current/server/es-es/adminview_postgres.htm
Almacenamiento en caché El almacenamiento en caché ayuda a Tableau Server a responder a las solicitudes de clientes de manera
rápida, en especial para las vistas que se conectan con las bases de datos de acceso en vivo. Tableau
Server tiene varias capas de almacenamiento en caché diseñadas para maximizar la reutilización de
datos y cálculos para múltiples solicitudes de usuarios:
56
Renderización del lado del cliente
Antes de que las marcas y los datos de una vista se muestren en el navegador web de un cliente, se
recuperan, interpretan y representan. Tableau Server puede realizar este proceso en el navegador web
del cliente o en el servidor. La renderización del lado del cliente es el modo predeterminado porque
manejar la representación y todas las interacciones en el servidor puede conducir a más transferencias
de datos en la red y retrasos de recorrido de ida y vuelta. Con la renderización del lado del cliente, la
mayoría de las interacciones con la vista son más rápidas porque se interpretan y generan en el cliente.
Sin embargo, algunas vistas se generan con mayor eficacia en el servidor, donde hay más poder de
procesamiento. La renderización del lado del servidor tiene sentido para vistas complejas hasta el punto
en que los archivos de imágenes consumen significativamente menos ancho de banda que los datos
usados para crear esas imágenes. También, como las tablets suelen tener un rendimiento mucho más
reducido que las computadoras, estas admiten vistas menos complejas. Hay casos en los que una vista
abierta desde el navegador web de una computadora puede estar generada en el cliente, pero la misma
vista abierta desde el navegador web de una tablet está generada en el servidor.
Tableau Server está configurado para resolver automáticamente todas estas situaciones con el cálculo
del umbral como desencadenador de la renderización de la vista en el servidor, en vez de en el
navegador web. Como administrador, usted puede probar o ajustar esta configuración, tanto para
computadoras como para tablets. Consulte los temas a continuación para obtener más información.
Puede determinar esto en cualquier momento agregando lo siguiente a la URL de la vista. Se mostrará
una pequeña "S" o "B" en la barra de herramientas de la vista para indicar el modo de renderización:
“?:jsdebug=true”
57
También puede activar y desactivar la renderización del lado del cliente con los siguientes parámetros
de URL:
Desactivar = “?:render=false”
Activar = “?:render=true”
La renderización del lado del cliente es compatible con Internet Explorer 9.0 o versiones posteriores,
Firefox, Chrome y Safari. Todos estos navegadores web incluyen el elemento HTML 5 <canvas>, que se
usa para la renderización del lado del cliente. Además, si una vista usa polígonos, formas personalizadas
o la característica de historial de página, se lleva a cabo renderización del lado del servidor, incluso si la
renderización del lado del cliente también está habilitada.
Caché de mosaicos de imagen
Si no se usa la renderización del lado del cliente, Tableau tiene tres capas de renderización en el servidor
que pueden ayudar a mejorar los tiempos de generación de vistas. La primera capa es la memoria caché
de mosaicos de imagen.
Los dashboards se entregan al cliente como una serie de "mosaicos" de imagen, que se ensamblan para
mostrar el dashboard completo. La reutilización del contenido de esta memoria caché es la clase más
eficaz de respuesta del servidor y ocurre si:
El dashboard ya se generó, y el tiempo de vigencia de la memoria caché no acabó.
El dashboard no implementa seguridad por usuario.
La solicitud requiere un dashboard del mismo tamaño que el almacenado en caché previamente,
esto puede ocurrir si las dos ventanas de navegación del cliente son exactamente del mismo
tamaño o si el dashboard se diseñó con una configuración de tamaño exacto.
La memoria caché de mosaicos de imagen está basada en el disco, y su gestión está a cargo del servicio
de puerta de enlace. Hay una máquina de trabajador por VizQL.
Caché del modelo
Si no podemos usar la memoria caché de mosaicos de imagen, el servidor VizQL debe volver a generar
las imágenes solicitadas. Para hacerlo, es posible que sea capaz de usar todos los cálculos previos: los
campos calculados, los cálculos de tablas, las líneas de referencia, las líneas de tendencia, etc. Estos
resultados se conservan en la memoria caché del modelo VizQL, y los podemos usar si:
Esta instancia de VizQL ya generó el dashboard solicitado, y el tiempo de vigencia de la memoria
caché no acabó.
Los datos solicitados no cambiaron: todos los filtros, los parámetros y los cálculos dinámicos son
los mismos.
Los cálculos no tuvieron cambios: no se produjeron cambios en las líneas de referencia, las líneas
de tendencia, etc.
El dashboard no implementa seguridad por usuario.
La memoria caché del modelo se basa en RAM y hay una por cada instancia de servidor VizQL. Ejecutar
varias instancias de VizQL puede disminuir la eficacia de la memoria caché del modelo si la cantidad de
usuarios es baja.
58
Caché de resultados de consulta
Si no podemos usar la memoria caché del modelo, quizás sea posible hacer todos los cálculos necesarios
con datos que ya se hayan leído de la fuente de datos y estén almacenados en la memoria caché de
resultados de consulta. La memoria caché de resultados de consulta contiene los registros que
devuelven las consultas, y podemos usarlos si:
Esta instancia de VizQL ya generó el dashboard solicitado, y el tiempo de vigencia de la memoria
caché no acabó.
Las dimensiones y las medidas requeridas de la fuente de datos no cambiaron: no cambió ningún
campo, por ejemplo, mediante un campo calculado dinámico.
Los filtros del dashboard no cambiaron.
El dashboard no implementa seguridad por usuario.
Al igual que la memoria caché del modelo, la memoria caché de resultados de consulta se basa en RAM
y hay una por cada instancia de servidor VizQL. Ejecutar varias instancias de VizQL puede disminuir la
eficacia de la memoria caché de resultados de consulta si la cantidad de usuarios es baja.
Maximización del uso de memoria caché
Como se analizó antes, lo más eficaz que puede hacer un diseñador de libros de trabajo para garantizar
la reutilización de la memoria caché de mosaicos de imagen y del modelo es configurar la regla de
tamaño del dashboard como "tamaño exacto".
Ajuste de memorias caché
A nivel macroscópico, se puede seleccionar una de tres configuraciones posibles de rendimiento de la
memoria caché en Tableau Server mediante la utilidad de configuración de Tableau Server.
Minimizador de
consultas Cada servidor VizQL almacena modelos y resultados de consulta
en la memoria caché tanto tiempo como sea posible.
Las solicitudes obtienen datos almacenados en la memoria caché hasta
que se actualizan explícitamente.
La memoria caché se almacena en memoria; cuando la memoria se llena,
la memoria caché comienza a eliminar los elementos más antiguos.
Equilibrado Todos los servidores almacenan en caché los modelos y los datos, como
máximo, durante la cantidad de minutos especificada.
Las solicitudes obtienen datos almacenados en la memoria caché que,
como máximo, tiene una cantidad conocida de minutos de antigüedad.
Más actualizado Los servidores no almacenan modelos ni datos en la memoria caché.
Las solicitudes obtienen los datos más nuevos de la fuente de datos.
Esta opción representa una carga mucho más pesada sobre los servidores.
59
Es posible forzar a Tableau a eludir todas las memorias caché y forzar una consulta de la fuente de datos
agregando el parámetro "?:refresh=yes" a la URL de la vista. Por ejemplo:
http://demo-
apac.tableausoftware.com/views/NewWaveDashboard/ExecutiveDashboard?:refresh=yes
Los administradores de Tableau Server también pueden ajustar el tamaño de la memoria caché del
modelo y de los resultados de consulta. Estas configuraciones se cambian con la herramienta de línea de
comando tabadmin.
Caché del
modelo vizqlserver.modelcachesize:30;
la cantidad de modelos para almacenar en la memoria caché, con un
modelo por instancia de visualización en el libro de trabajo.
Caché de
consultas vizqlserver.querycachesize:64;
el tamaño en megabytes de los resultados de consulta para almacenar en
la memoria caché.
Visite el siguiente enlace para obtener más información:
http://onlinehelp.tableausoftware.com/current/server/es-es/reconfig_tabadmin.htm
Tenga en cuenta que cambiar estas configuraciones incrementará la cantidad de RAM que usan las
instancias del servidor VizQL; asegúrese de contar con suficiente memoria en su máquina con Tableau
Server para admitir estos cambios.
60
Parte 6: ¿Hay otros factores que considerar? La última sección trata sobre otros factores que, en muchos casos, son más difíciles de alterar. Por
ejemplo, la elección del SO, el hardware en que se ejecuta Tableau, etc. son cosas que pueden afectar el
rendimiento de Tableau.
Entorno
SO de 32 bits vs. SO de 64 bits
En general, se prefiere ejecutar Tableau en un SO de 64 bits. Con el lanzamiento de Tableau 8.1, la
aplicación completa es de 64 bits, lo que significa que puede usar más de 3,2 GB de RAM y nos permite
lidiar con consultas mucho más grandes y generar muchas más marcas de datos. Esto tiene un gran
impacto en situaciones en la que se hacen combinaciones en campos de mucha cardinalidad o, quizás,
se trata de generar (a falta de un buen consejo) una tabulación cruzada muy grande. En sentido práctico,
esto constituyó una gran ventaja para los clientes que generan una gran cantidad de marcas de datos,
por ejemplo, polígonos geográficos personalizados.
Más RAM, CPU más rápida
Al igual que la mayoría de las aplicaciones, Tableau se beneficiará de contar con más RAM y una CPU
más rápida. Algunas de las acciones que Tableau realiza son de multiproceso (p. ej., crear o actualizar
extracciones de datos), de modo que también se beneficiará de contar con más núcleos.
SSD vs. disco giratorio
Algunas acciones de Tableau implican muchas E/S (p. ej., la carga, la creación y la actualización de
extracciones de datos) y se beneficiarían del uso de SSD, en lugar de discos giratorios.
Interfaz de red más rápida
Si los datos son remotos con respecto a la estación de trabajo de Tableau o si usted desea publicar datos
o libros de trabajo en Tableau Server, Tableau se beneficiará de una interfaz de red más rápida y de una
conexión de red con latencia baja.
Elección del navegador
Tableau hace uso intensivo de JavaScript, de modo que la velocidad del intérprete de JavaScript del
navegador afecta la velocidad de la renderización. Es una competencia reñida en un campo que
evoluciona constantemente, pero, en el presente, los navegadores se clasifican de la siguiente manera:
Firefox, Chrome
nuevo IE (10 o posterior)
viejo IE (9 o anterior), Opera, Safari
Esta recomendación se basa en las cifras informadas aquí:
http://www.zdnet.com/the-big-browser-benchmark-january-2013-edition_p2-7000009776/
61
Anexo A: Recursos relacionales vs. OLAP Tableau se conecta tanto a cubos (OLAP) como a fuentes de datos relacionales con conexiones nativas en vivo. Los cubos y las tablas relacionales
difieren mucho en estructura y propósito y, por lo general, en el rendimiento también. Debido a estas diferencias, Tableau optimizó las conexiones
y las funcionalidades para sacar el mayor provecho de cada tipo de conexión.
En general, los cubos cuentan con una agregación previa y una estructura. Las fuentes de datos relacionales suelen ser desagregadas y menos
estructuradas. La gran mayoría de las funcionalidades de Tableau son idénticas para ambos tipos de fuentes de datos.
Características específicas
Cubos Relacionales
Filtros de usuarios Los cubos tienen la capacidad de definir la seguridad en el nivel del usuario. Tableau tiene la capacidad de aprovechar esta lógica para su entorno. Usted no necesita recrear su modelo de seguridad dentro de Tableau. Si no tiene esto definido en su cubo, puede definirlo en Tableau.
SEGURIDAD
Las fuentes de datos relacionales tienen la capacidad de definir la seguridad en el nivel del usuario. Usted no necesita redefinir esta lógica en Tableau. Si su base de datos no tiene esta lógica, puede definirla en Tableau.
SEGURIDAD
Combinación de datos En toda organización hay datos en cubos y datos que no están en los cubos. Tableau permite a los usuarios combinar fácilmente datos relacionales con datos en cubos, sin mover los datos ni modelarlos en los cubos.
COMBINACIÓN DE DATOS
La combinación de datos funciona con bases de datos relacionales, múltiples bases de datos y cubos. El enfoque de Tableau para la consulta de fuentes de datos desiguales es único. Tableau no requiere que se muevan los datos.
COMBINACIÓN DE DATOS
Análisis de conjuntos Muchos usuarios de cubos aman los conjuntos. Tableau saca provecho de estos conjuntos. Sin embargo, si no existe un conjunto dentro del cubo, usted puede crear uno dinámico y dimensional en Tableau.
CONJUNTO JERÁRQUICO
Los conjuntos permiten almacenar intersecciones dimensionales de datos. Cuando usa una fuente de datos relacional, usted puede crear conjuntos de datos similares a cubos.
CONJUNTOS
62
Características específicas
Cubos Relacionales
Funciones de cálculo agregadas
Las agregaciones se hacen con antelación en un cubo, y Tableau responde con el conjunto de agregación en el cubo. Este es uno de los principales beneficios de rendimiento de los cubos.
Normalmente, no se hacen agregaciones con antelación en bases de datos relacionales. Entonces, Tableau permite al usuario seleccionar la agregación en Tableau, y la base de datos ejecuta la agregación a pedido.
"Grupos" de Tableau Generalmente el desarrollador define las agrupaciones, que se calculan con antelación, en el cubo. Esto da como resultado la estructura estándar con una ventaja de rendimiento. Puede hacer agrupaciones con MDX sencillo: [Customer].[CustomerGeography].[France] + [Customer].[CustomerGeography].[Germany]
Las agrupaciones no suelen modelarse con antelación en las bases de datos relacionales. Sin embargo, Tableau le proporciona la capacidad de crear grupos sobre la marcha en cualquier momento de su análisis.
CREAR GRUPOS
"Agrupaciones" de Tableau
Las agrupaciones o agrupaciones de rangos de medidas normalmente se modelan en el cubo y son atributos de la ventana de dimensiones. Esto posibilita una definición común para las agrupaciones. Los usuarios pueden crear o modificar agrupaciones en Tableau con MDX sencillo: str(INT(([Internet Sales Amount] / [Bin Size])) * [Bin Size])
Normalmente, no se modelan agrupaciones en bases de datos relacionales. No obstante, Tableau permite a los usuarios crear agrupaciones de medidas.
AGRUPACIONES PAREJAS
AGRUPACIONES DISPAREJAS
Manipulación de cadenas
Con frecuencia, las manipulaciones de cadenas no se hacen con antelación en los cubos. Estas pueden hacerse en Tableau mediante MDX sencillo: LEFT([Product].[Product Categories].DataMember.MemberValue,LEN([Product].[Product Categories].DataMember.MemberValue)-5)
Cuando se conecta a fuentes de datos relacionales, puede lograr la manipulación de cadenas directamente en Tableau con campos calculados. Esto puede resultar útil cuando se cambia el caso, se crean códigos postales zip 5 a partir de zip 5+4 y muchas otras manipulaciones.
FUNCIONES DE CADENA
63
Características específicas
Cubos Relacionales
Tipos de datos Los tipos de datos (p. ej., cadena, fecha, número) y los roles (dimensión y medida) se definen explícitamente en el cubo. Esto garantiza que los atributos y las agregaciones con antelación aparezcan en las ventanas adecuadas de Tableau.
Tableau detectará automáticamente el tipo de columna de las columnas de las bases de datos relacionales. Esto limita la cantidad de manipulación de datos que necesitará hacer en Tableau. Cuando desee cambiar tipos de datos en Tableau, podrá hacerlo con un clic derecho:
CAMBIO DE TIPOS DE DATOS
KPI/cuadro de mandos En un cubo, puede definir atributos que contengan información que permita saber dentro de qué grupos de KPI entra cierto miembro. También puede crear KPI umbrales directamente en Tableau con un cálculo o un parámetro sencillos:
[Internet Sales Amount] >= [Desired Sales]
En una base de datos relacional, puede crear cálculos de KPI muy rápido con campos calculados sencillos.
CÁLCULOS DE KPI
Acciones Las acciones de Tableau son completamente compatibles con los cubos. También funcionan desde un cubo hacia fuentes relacionales en el mismo libro de trabajo. Las acciones basadas en cubos no se admiten en Tableau.
ACCIONES
Las acciones funcionan dentro de fuentes de datos relacionales y entre cubos y fuentes relacionales. Esto permite que ambos tipos de datos se comuniquen entre sí.
Jerarquías Esta es una de las ventajas claves de usar Tableau con cubos. Tableau también admite explorar en profundidad de manera asimétrica o desigual a través de la jerarquía.
Las bases de datos relacionales no tienen jerarquías integradas, pero Tableau permite crearlas fácilmente sobre la marcha.
CREACIÓN DE JERARQUÍAS
Filtros rápidos Cuando esté conectado a un cubo, podrá ver filtros rápidos como parte de la jerarquía, y su estructura está expuesta. Puede filtrar en múltiples niveles de una jerarquía. Si tiene un solo atributo, puede evitar la vista estructurada y tener una jerarquía de un solo nivel.
En las bases de datos relacionales, los filtros rápidos se muestran en un único nivel, sin estructura. Usted puede incluir estos filtros rápidos en las visualizaciones y el dashboard con un solo clic derecho.
64
Características específicas
Cubos Relacionales
Extracciones Los cubos, con su naturaleza de agregación con antelación, son inherentemente rápidos y no requieren extracciones.
Con frecuencia, las bases de datos relacionales pueden ser lentas. Tableau ofrece su motor de datos rápido como método para posibilitar un funcionamiento extremadamente rápido para los datos relacionales. Tableau brinda la opción de conectarse en vivo o extraer los datos.
Alias El uso de nombres cortos de empresas es algo común para los cubos. Cuando se conecte a Essbase, puede usar cualquier archivo de alias que esté definido en el cubo.
En las bases de datos relacionales, usted puede crear sus valores de alias para cambiar los nombres de los miembros de una dimensión. Esto es útil cuando quiere hacer una agrupación de elementos y darle un nombre nuevo.
Formato El formato de los campos (porcentaje, divisa, etc.) se define en el cubo. Esto garantiza que los números se muestren correctamente sin intervención alguna del usuario.
Normalmente, las fuentes de datos relacionales no tienen ningún formato inherente. Los porcentajes y las divisas se pueden definir directamente en Tableau. Incluso, puede establecer el formato predeterminado para que cada vez que se usen esas medidas, se muestren con el formato correcto.
Orden de ordenamiento
Los cubos permiten al desarrollador definir el orden de ordenamiento de los miembros de un atributo o una dimensión. Esto asegura que cuando use atributos, sus miembros se muestren siempre en el orden correcto. Esto es útil cuando existen formatos no estándares.
La definición de las bases de datos relacionales no incluye un ordenamiento predeterminado. En Tableau, el usuario puede definir un ordenamiento a partir de una medida (ordenar los estados según las ventas) o usar el ordenamiento manual predeterminado.
Calendarios fiscales Los cubos brindan al desarrollador la capacidad de definir diferentes calendarios en su interior. Ya sea que se trate de un calendario fiscal, un calendario 4-4-5 o su propio calendarios de ventas al por menor, Tableau hereda esta estructura y se comporta de la misma manera.
Por lo general, las bases de datos relacionales solo almacenan fechas, no calendarios diferentes. En Tableau, el usuario puede definir el inicio de un nuevo año fiscal o ingresar cálculos de fechas que imiten el calendario 4-4-5 o el de ventas al por menor.
Top Related