Crear cálculos eficientes
Cuando los datos no le ofrecen toda la información que necesita para responder a las preguntas que tiene, puede crear campos calculados que le ayuden con el análisis.
Dentro de un campo calculado puede definir una constante codificada (como puede ser un tipo de cambio), hacer operaciones aritméticas sencillas como sumar o multiplicar (por ejemplo, ingresos menos coste), usar fórmulas matemáticas más complejas, hacer pruebas lógicas (IF/THEN, CASE), hacer conversiones de tipo, enviar expresiones a servicios externos como R y mucho más.
Hay diferentes tipos de cálculos en Tableau:
Cálculos básicos y de agregación: estos tipos de cálculos se generan dentro de la consulta a la fuente de datos subyacente y se calculan en la base de datos. Por lo general, los cálculos básicos y de agregación son fáciles de escalar. Además, hay muchas técnicas para ajustar la base de datos para mejorar su rendimiento.
Cálculos de tablas: estos cálculos los lleva a cabo Tableau en el conjunto de resultados de la consulta. Aunque esto supone más trabajo para Tableau, los cálculos de tablas se suelen hacer con un conjunto de registros mucho más pequeño que en la fuente de datos original. Si el rendimiento del cálculo de tablas es un problema (quizás porque el conjunto de resultados indicado a Tableau es muy grande), plantéese transferir algunos aspectos del cálculo a la capa de fuente de datos. Una forma de hacerlo es agregar los datos y, a continuación, llevar a cabo el cálculo en los datos agregados.
Expresiones de nivel de detalle (LOD): estos tipos de cálculos se generan dentro de la consulta a la fuente de datos subyacente y se calculan en la base de datos. Se expresan como una selección anidada, de modo que dependen del rendimiento de la base de datos. Un cálculo de tablas o una combinación podrían tener mejor rendimiento que una expresión LOD, o viceversa.
Si sospecha que el rendimiento se ha ralentizado debido a una expresión LOD, puede intentar sustituirla por un cálculo de tablas o una combinación de datos para ver si el rendimiento mejora. Para ver un ejemplo, consulte el ejemplo 2 de Orden de las operaciones en Tableau.
Como las expresiones LOD pueden verse afectadas por la unión de selecciones, consulte Si damos por hecho la integridad referencial de las uniones si las consultas son lentas al usar expresiones LOD.
Para obtener más información, consulte el documento de Tableau titulado Comprensión de las expresiones de nivel de detalle (LOD).
Usar parámetros para los cálculos condicionales
Una técnica habitual en Tableau es mostrar un control de parámetro para que los usuarios puedan seleccionar un valor que determine cómo se lleva a cabo un cálculo. Normalmente, para ofrecerle al usuario opciones fáciles de entender, tiene sentido crear el parámetro como un tipo de cadena. Sin embargo, los cálculos numéricos son mucho más rápidos que los cálculos de cadena, de modo que le recomendamos aprovechar la característica Mostrar como de los parámetros: es decir, muestre etiquetas de texto pero use valores enteros subyacentes para la lógica de cálculo. Para obtener más información, consulte Crear parámetros.
Convertir campos de fecha
A menudo, los usuarios tienen datos que no están almacenados en formatos de datos nativos; por ejemplo, una fecha puede ser una cadena o una marca de tiempo numérica. Puede usar la función DATEPARSE si los datos la admiten. Está disponible para conexiones de archivos de texto y de Microsoft Excel no heredadas, así como para fuentes de datos de MySQL, Oracle, PostgreSQL y de extracción de datos de Tableau. Si no, analice el campo en una cadena de fecha como "2012-01-01". También se prefieren las cadenas ISO, ya que son específicas de cada configuración regional. A continuación, transfiera el valor a la función DATE. Si los datos iniciales son un campo numérico, no es nada eficiente convertirlos primero en una cadena y después en una fecha. Es mucho mejor mantener los datos como un campo numérico y usar DATEADD y valores literales de fecha para llevar a cabo el cálculo. Las ventajas en el rendimiento pueden ser considerables cuando se usan grandes conjuntos de datos. Vea Funciones de fecha para obtener más información sobre estas funciones.
Usar instrucciones lógicas CASE
Cuando se trabaja con sentencias lógicas complejas, las sentencias CASE pueden ser más rápidas que las sentencias IF o ELSEIF.
Recuerde que ELSEIF es más rápida que ELSE IF, porque una instrucción IF anidada se calcula como una segunda instrucción IF, no como parte de la primera.
Para obtener más información, consulte el documento técnico Diseño de libros de trabajo eficientes.
Agregar medidas
Si las vistas que crea son lentas, asegúrese de que esté trabajando con medidas agregadas. Con medidas desasociadas, puede que esté intentando ver muchas filas de datos simultáneamente. Para reducir la cantidad de filas, agregue los datos. Para ello, seleccione Análisis > Agregar medidas.
Consejos de cálculo
Hay muchas acciones sencillas que puede hacer para mejorar el rendimiento de los cálculos.
Los valores distintos para contar son uno de los tipos de agregación más lentos en casi todas las fuentes de datos. Use la agregación COUNTD con moderación.
El uso de parámetros con un amplio alcance (por ejemplo, en una instrucción SQL personalizada) puede afectar al rendimiento de la caché.
Filtrar según cálculos complejos puede provocar que los índices no se tengan en cuenta en los datos subyacentes.
Las funciones de script como RAWSQL y SCRIPT_* para integrarse con servicios externos pueden ser lentas, sobre todo si hay muchos valores que se tengan que transferir de un extremo a otro entre el servidor DBMS/R.
Use NOW únicamente si tiene el nivel de detalle de marca de tiempo. Use TODAY para los cálculos de nivel de fecha.
Tenga en cuenta que todos los cálculos básicos se transfieren a los datos subyacentes, incluso los cálculos literales como las cadenas de etiqueta. Si tiene que crear etiquetas (por ejemplo, para encabezados de columna) y tiene datos de gran volumen, cree una fuente de datos sencilla de archivo de texto o Excel con solo un registro para incluirlos de modo que no sobrecarguen la fuente de datos grande.