Optimización DAX: dónde encontrar la trampa DAX oculta

Quiero centrarme hoy en algo que llamo la trampa DAX oculta. Si se encuentra con esta situación, sentirá que está perdiendo la cabeza porque su DAX se verá bien, pero no funcionará. Lo guiaré cuando eso ocurra y lo que puede hacer al respecto, y en el proceso, también hablaré sobre algunas mejores prácticas generales de optimización de DAX. Puedes ver el video completo de este tutorial en la parte inferior de este blog.

Primero echemos un vistazo a lo que estamos trabajando aquí. Tenemos alrededor de 10 años de datos de Internet Movie Database. Las tablas de hechos son bastante simples y tenemos datos de calificación, datos de presupuesto y datos brutos.

Hoy, veremos los ingresos brutos mundiales.

Optimización DAX: dónde encontrar la trampa DAX oculta

También tenemos nuestra mesa de fechas extendida. Este será un análisis de inteligencia de tiempo basado en la tabla de fechas y la tabla de hechos.

Optimización DAX: dónde encontrar la trampa DAX oculta

Tabla de contenido

Total mundial bruto por año

Queremos hacer algo realmente común y simple. Nuestro total bruto mundial es solo una medida de suma agregada muy simple, que queremos convertir en un porcentaje.

Optimización DAX: dónde encontrar la trampa DAX oculta

Para hacer esto, tomamos el numerador ( medida Total Worldwide Gross ) y el denominador ( medida Total Worldwide Gross , pero eliminamos el contexto del filtro de año).

Optimización DAX: dónde encontrar la trampa DAX oculta

Utilicé la porque creo que es más intuitivo cuando lees el código, pero si prefieres la , funciona igual de bien. Simplemente dividimos el numerador por el denominador para obtener el resultado.

Si tomamos la medida resultante y la colocamos en nuestra tabla, verá que hace exactamente lo que esperamos que haga. Obtenemos el 100% en la parte inferior y obtenemos los años convertidos en sus porcentajes individuales. Hasta ahora todo bien, y todavía no hemos encontrado ningún problema.

Optimización DAX: dónde encontrar la trampa DAX oculta

Total mundial bruto por trimestre

Echemos un vistazo a una situación similar en la que vamos por trimestre. Esta medida podría ser útil porque existe la hipótesis de que los ingresos brutos de la temporada de películas de verano son diferentes desde el comienzo del año y hacia el final del año previo a la temporada de los Oscar.

Nuevamente, tenemos exactamente la misma medida con la función REMOVEFILTERS en los números de trimestre en lugar del año.

Optimización DAX: dónde encontrar la trampa DAX oculta

Y si colocamos la medida que acabamos de hacer en la tabla, también hace exactamente lo que esperábamos.

Optimización DAX: dónde encontrar la trampa DAX oculta

Total mundial bruto por mes y año

Echemos un vistazo al tercer caso, que puede ser muy común, donde queremos buscar por mes y año.

Optimización DAX: dónde encontrar la trampa DAX oculta

Y nuevamente, usaremos la misma medida que antes. Pero esta vez, eliminaremos el filtro por mes y año.

Optimización DAX: dónde encontrar la trampa DAX oculta

Dejemos eso en nuestra mesa. De repente no funciona.

Optimización DAX: dónde encontrar la trampa DAX oculta

Podemos decir lo que no funciona al respecto. Sabemos que la medida del bruto mundial funciona, lo que significa que el numerador está bien, pero el denominador no. En cada uno de los casos anteriores, la función REMOVEFILTERS eliminó el filtro correctamente, pero aquí claramente no lo hizo.

De hecho, podemos probar esto cambiando lo que devolvimos aquí en el resultado.

Optimización DAX: dónde encontrar la trampa DAX oculta

En lugar de Resultado, usemos Denominador. Tenga en cuenta que esto se formateará en un porcentaje, por lo que se verá un poco divertido.

Optimización DAX: dónde encontrar la trampa DAX oculta

Lo que deberíamos obtener para el denominador es el mismo número en cada fila, pero no lo es.

Optimización DAX: dónde encontrar la trampa DAX oculta

Podemos decir que no está eliminando el filtro en el mes y el año, y pensamos que es porque el mes y el año están en el texto.

Optimización DAX: dónde encontrar la trampa DAX oculta

Pero el anterior para el trimestre también se expresó en texto, por lo que no es simplemente porque es texto. Solo hay que arreglarlo. Una vez que suelta el campo sin ordenarlo, se ordenará alfabéticamente.

En la tabla de fecha extendida, echemos un vistazo a ese campo llamado Mes y año . Si lo miramos en la columna Ordenar por , veremos algo interesante.

Veremos que esa columna está ordenada por un número llamado MonthnYear. Cuando ordena una columna por otra, esa columna de ordenación en realidad se convierte en parte del contexto del filtro. Esto es lo que está echando a perder este cálculo.

Optimización DAX: dónde encontrar la trampa DAX oculta

Volvamos a nuestra medida y eliminemos el contexto del mes y año que estamos usando como ordenación.

Optimización DAX: dónde encontrar la trampa DAX oculta

Ahora estamos obteniendo exactamente lo que deberíamos, que es el mes y el año calculados como un porcentaje adecuado.

Optimización DAX: dónde encontrar la trampa DAX oculta

Al eliminar un contexto de filtro, se necesitarán dos campos para hacer esto cuando esté ordenado . Puede preguntar que en lugar de tener que hacer dos campos aquí, ¿por qué no podemos eliminar los filtros en toda la tabla de fechas?

La respuesta es que podemos, y esto funcionará para los tres ejemplos de los que hablamos porque cada una de esas columnas es parte de nuestra tabla de fechas. Eliminar todo el contexto de filtro en esa tabla funcionará para los tres casos, pero en realidad es una mala idea.

Como principio general de optimización de DAX, debe eliminar tanto contexto de filtro como sea necesario para obtener el resultado que desea.

En la mayoría de los casos, no presentará esto en un formato tabular. Lo presentará como una matriz y necesitará una medida más compleja porque tiene dos granularidades diferentes en la misma columna. Esta medida parece complicada, pero en realidad no lo es.

Optimización DAX: dónde encontrar la trampa DAX oculta

Esto es solo una extensión de lo que ya hemos hecho. La primera parte de este cálculo de optimización DAX muestra los denominadores para la granularidad diferente. Eliminamos el contexto de filtro para un mes, para el año y para toda la tabla.

Optimización DAX: dónde encontrar la trampa DAX oculta

Para la segunda parte del cálculo, usamos SWITCH TRUE. Para esta función hay que ir de lo más específico a lo menos específico. El mes es nuestro alcance más estricto y específico, así que aquí es donde comenzamos. Tendremos que eliminar el contexto usando esos dos campos que identificamos.

Optimización DAX: dónde encontrar la trampa DAX oculta

Para el alcance del año, tenemos que eliminar el contexto del año y eliminar el contexto de toda la tabla.

Optimización DAX: dónde encontrar la trampa DAX oculta

Echemos un vistazo a lo que sucede si tomamos y eliminamos el contexto en toda la tabla de fechas . Usaremos una medida diferente que elimina el contexto en toda la tabla de fechas para los tres casos.

Optimización DAX: dónde encontrar la trampa DAX oculta

Veremos que la medida está eliminando demasiado el contexto. En lugar de calcular la contribución de cada mes a ese año, está calculando la contribución de ese mes a todo el conjunto de datos. Esto no es lo que queremos que suceda porque eliminar el contexto de toda la tabla es realmente solo un instrumento contundente cuando se necesita un bisturí.

Conclusión

Hay muchos casos en los que tiene una matriz y necesita controlar cuidadosamente qué contexto elimina. Simplemente eliminar el contexto en toda la tabla causará este tipo de problemas.

Espero que cuando surja esta situación (que invariablemente lo hará, en algún momento), la reconocerá como la trampa oculta que hemos discutido en esta publicación de optimización de DAX, y podrá evitarla sin la misma frustración. que me causó cuando lo vi por primera vez y no pude entender por qué mi DAX no funcionaba correctamente.

Si disfrutó del tema de optimización DAX cubierto en este tutorial en particular, suscríbase al canal de televisión LuckyTemplates . Tenemos una gran cantidad de contenido que sale todo el tiempo de mí y una variedad de creadores de contenido, todos los cuales están dedicados a mejorar la forma en que usa LuckyTemplates y Power Platform.

Leave a Comment

Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Descubra cómo calcular el total de transacciones realizadas en los últimos N días y obtenga información útil utilizando la inteligencia de tiempo en LuckyTemplates.

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

En este tutorial, demuestro cómo mostrar clústeres en sus datos permite extraer información valiosa usando técnicas DAX avanzadas.

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

En este tutorial, aprenderá a calcular la <strong>población actual del personal</strong> para las relaciones múltiples de la tabla de calendario mediante la función COUNTROWS y FILTER en LuckyTemplates.

Hacer una solicitud HTTP en Power Automate

Hacer una solicitud HTTP en Power Automate

Aprenda a crear una solicitud HTTP con Power Automate y cómo implementar soluciones efectivas para la automatización de tareas.

Programe un flujo de escritorio para que se ejecute en Power Automate

Programe un flujo de escritorio para que se ejecute en Power Automate

En este tutorial, aprenda cómo programar un flujo de escritorio en Power Automate para automatizar tareas en la web y su escritorio.

Power Automate Terminar Control de acción en flujos

Power Automate Terminar Control de acción en flujos

Aprenda a usar correctamente el control Terminar acción de Power Automate que termina las acciones en un flujo si no se cumple alguna de las condiciones.

Power Query: combinar archivos de varias carpetas

Power Query: combinar archivos de varias carpetas

Aprenda a combinar archivos de varias carpetas en su red, escritorio, OneDrive o SharePoint utilizando Power Query.

Tipos de flujo de Power Automate y cuándo usarlos

Tipos de flujo de Power Automate y cuándo usarlos

En este blog, analizamos las similitudes y diferencias entre los tipos de flujo de Power Automate y determinamos cuándo usar cada flujo. Encuentra la mejor opción de automatización.

Conectores de Power Automate: número, texto y fecha y hora

Conectores de Power Automate: número, texto y fecha y hora

Familiarízate con algunos conectores Power Automate integrados que transforman cadenas en otro formato: número, texto y fecha y hora.

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Este tutorial detallado sobre el analizador VertiPaq en DAX Studio le enseñará cómo usar la pestaña Relaciones para optimizar su DAX y resolver problemas de integridad referencial.