Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

En esta publicación de blog, trataremos algunos problemas problemáticos en la inteligencia de tiempo, en particular los problemas causados ​​por la granularidad de la semana y los problemas que puede causar el número irregular de semanas en un año. Usaremos compensaciones para generar inteligencia de tiempo precisa en DAX.

Hoy tenemos un escenario interesante para ti. Esto surgió un par de veces recientemente en el foro de LuckyTemplates. Lo que la gente quería hacer era tomar una imagen (que podría ser un gráfico de líneas o de barras) y variarla dinámicamente en la fecha de inicio. Puedes ver el video completo de este tutorial en la parte inferior de este blog.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

En este caso, usamos el mismo conjunto de datos con el que trabajamos para el precio spot promedio por barril de petróleo . En lugar de comenzar siempre a principios de enero, queríamos poder hacer clic en el elemento visual, cambiarlo a una fecha de inicio diferente, pero mostrar siempre un año de datos.

Tabla de contenido

Ejemplos de escenarios de inteligencia de tiempo en DAX

Hay una serie de razones por las que es posible que desee hacer esta técnica. Puede usar esto si tiene una métrica que se reajusta constantemente en términos de cómo se calcula. Es posible que solo desee mostrar los datos desde el período del reajuste en adelante.

Otra razón para usar esto es si desea visualizarlo de forma animada. Básicamente, esto tomará sus datos y los mostrará dinámicamente una vez que haga clic en el acceso de reproducción.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

En esta imagen, podemos cambiar la fecha de inicio mes a mes para mostrar cómo cambia en un período de 12 meses a lo largo del tiempo. Este es un visual interesante y útil para diferentes casos comerciales, pero en teoría, también representa una serie de problemas clave relacionados con DAX y el modelado de datos.

Vayamos a LuckyTemplates y veamos primero nuestro modelo de datos. Este es un modelo de datos realmente simple con una tabla de fechas extendida y una tabla de precios al contado conectada a las fechas.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Uso de compensaciones para inteligencia de tiempo en DAX

Una de las cosas en las que trabajaremos es en las compensaciones . Las compensaciones en la tabla de fecha extendida se calculan dinámicamente. Cada vez que se actualiza o se abre el informe, pasa por el código M. Por ejemplo, en un desplazamiento mensual, asigna el mes actual con 0, el mes anterior con -1 y dos meses atrás con -2. Mirando hacia el futuro, asigna el próximo mes +1 y durante dos meses en el futuro +2.

Este es un concepto simple pero increíblemente poderoso cuando se trata de inteligencia de tiempo en DAX y se trabaja con meses , trimestres y semanas . Si no está utilizando una compensación, a veces crea una gran cantidad de complejidad en sus cálculos.

Usar compensaciones significa usar una serie continua de números donde retroceder un mes siempre es -1 y avanzar un mes siempre es +1, independientemente de en qué parte del año te encuentres.

Implementación de la estrategia del patito de goma para la inteligencia de tiempo en DAX

En el pasado, hablé sobre el rubber ducking , que es verbalizar tu estrategia en voz alta antes de comenzar a escribir tu DAX.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Estoy pensando en voz alta sobre cómo manejaré esto desde un contexto mensual usando inteligencia de tiempo en DAX. Comenzaría algo basado en el año y el mes seleccionados, y seleccionaría aquellos usando una tabla desconectada, porque si lo piensa, cualquier otra selección implicará cruzar años (con la excepción de enero).

Digamos que queremos 12 meses a partir de marzo, terminaremos con al menos dos meses en el año siguiente. Si usamos una segmentación conectada, solo podemos filtrar por ese año y no podremos filtrar por el próximo año.

Cosecha de las compensaciones desde la fecha de inicio

Hagamos esto con una tabla conectada tanto para el mes como para el año. Primero, necesitamos cosechar la primera compensación que se ocupa de la fecha de inicio.

Y luego queremos adelantar esa compensación 12 meses, y luego solo mirar las fechas que están dentro de ese conjunto de compensaciones. Déjame mostrarte cómo se ve eso en DAX.

Cálculo del rango mensual

Esta es nuestra medida para Dentro del rango mensual , donde seleccionamos nuestro año (que recolectamos de la tabla de años desconectados) y nuestro mes (que recolectamos de la tabla de meses desconectados).

También tenemos este otro parámetro en el que, si no se realiza ninguna selección, el valor predeterminado será enero. Este parámetro es principalmente solo para fines de depuración.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Cálculo de las compensaciones del mes inicial y final

Veamos la compensación del mes inicial calculando la compensación MAX. Eliminamos todos los filtros en la tabla de fechas y filtramos hasta el mes seleccionado y el año seleccionado. Para cada mes, debe haber solo una compensación que corresponda a ese mes y año.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Desde ese punto, podemos tomar la compensación del mes final , que es solo la compensación del mes inicial + 11 meses.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Y luego observamos cada fecha seleccionada y determinamos si se encuentra dentro de la compensación del mes inicial y la compensación del mes final. si está dentro de ese período, le damos un 1 y si no, le damos un 0.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Si volvemos a la vista mensual en nuestro objeto visual, podemos ver el objeto visual Dentro del rango que hemos establecido como igual a uno. Por lo tanto, solo muestra esos meses dentro del desplazamiento de inicio a finalización. Por ejemplo, si hacemos clic en febrero, vemos de febrero a enero.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Cálculo del rango semanal

Veamos cómo se ve esto desde un punto de vista semanal. Inicialmente, el visual comienza bien y va de la semana 1 a la semana 52. Hasta ahora, todo bien.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Pero si hacemos clic en los otros años en la segmentación de años, podemos ver la semana 52, mientras que algunos tienen la semana 53, lo que presenta muchos problemas. Puede ver en este ejemplo que el problema está comenzando a manifestarse.

Tenemos un período inicial del año 2020 y la semana 15 , pero el período final es el año 2021 y la semana 13 en lugar del año 2021 y la semana 14 .

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Si volvemos a la semana 1, podemos ver que comienza bien, pero termina en la semana 52. Si observamos el cálculo de la semana 53 aquí, el número máximo de semanas para 2020 y 2021 es de 53 semanas. Esto no va a funcionar para la granularidad semanal.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Veamos qué podemos hacer para que esto funcione. Necesitamos corregir el cálculo de DAX aquí mismo en esta parte:

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Esto se debe a que para algunos casos, 51 es correcto cuando solo hay 52 semanas en un año, pero para el año donde hay 53 semanas, se dejará fuera ese último período. Esto es exactamente lo que vimos en la visualización dinámica durante semanas, donde el cálculo eliminó ese período final en los años 2020 y 2021.

Para solucionar esto, vamos a la medida Incorrecta semanal dentro del rango , que en realidad parece más simple que la medida anterior. Teníamos una medida de compensación inicial y calculamos la compensación máxima. Luego, quitamos el filtro de las fechas y luego lo imponemos en la semana seleccionada y el año seleccionado con la suposición de que esto conduciría a la compensación correcta.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Pero esto no funciona porque no importaría si está utilizando un desplazamiento máximo o un desplazamiento mínimo. Todo lo que estamos haciendo es envolver un agregador para no colocar una columna desnuda en una instrucción CALCULATE.

Pero si volvemos aquí al ISO WeekNumber , podemos ver que un año y un número de semana no determinan de manera única una compensación semanal en ese primer período.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Se me ocurrió una manera a prueba de balas de hacer esto. Podría usar MIN, pero tiene más sentido crear esta medida de Compensación Semana1 . Para obtener la compensación de la semana 1, estamos tratando con la semana 2 porque nunca se divide. Independientemente de si hay 52 o 53 semanas en el año, la semana 2 permanece intacta.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

En este cálculo, filtramos hasta la semana 2 para obtener la compensación. Y luego, una vez que obtengamos la compensación de la semana 2, simplemente le restamos uno. Esto nos dará inequívocamente la compensación de la semana 1. Esto termina resolviendo nuestro problema.

Cálculo del rango dentro de la semana

Y luego volvemos a nuestra medida dentro del rango semanal y escribimos una declaración IF donde si el número de cosecha es para la semana 1, calculamos la compensación de la semana uno. Si no es la semana 1, simplemente calculamos la compensación de la semana inicial como lo hicimos en el cálculo mensual anterior.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Y luego, la compensación de la semana final será la compensación de la semana inicial + el número máximo de la semana, que podría ser 52 o 53. Luego simplemente restamos 1 para no contar dos veces la compensación inicial.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Podemos hacer la misma construcción que usamos para el rango mensual para filtrar las semanas, donde cualquier cosa que se encuentre entre el principio y el final del desplazamiento obtiene un 1, y cualquier cosa que no obtenga un 0.

Luego vamos a colocar la medida Dentro del rango semanal en el panel de filtro. Todo se comprueba y se ve exactamente bien.

Inteligencia de tiempo en DAX: cómo seleccionar dinámicamente el período de inicio

Podemos hacer clic en el eje de reproducción y ejecutar la granularidad de la semana. Podemos ver que funciona correctamente tal como lo hizo en el contexto del mes.

Conclusión

Esta es una inmersión bastante profunda en la inteligencia de tiempo en DAX, donde discutimos cómo podemos abordar algunos de los problemas relacionados con los números de semana. Espero que haya encontrado útil este tutorial y que le haya proporcionado algunas herramientas adicionales en su caja de herramientas cuando esté lidiando con una situación de semana problemática.

Si disfrutó del contenido cubierto en este tutorial en particular, no olvide suscribirse 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 dedicados a mejorar la forma en que usa LuckyTemplates y Power Platform.


Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Cómo guardar y cargar un archivo RDS en R

Cómo guardar y cargar un archivo RDS en R

Aprenderá a guardar y cargar objetos desde un archivo .rds en R. Este blog también cubrirá cómo importar objetos desde R a LuckyTemplates.

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

En este tutorial del lenguaje de codificación DAX, aprenda a usar la función GENERAR y a cambiar dinámicamente el título de una medida.

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Este tutorial cubrirá cómo usar la técnica de elementos visuales dinámicos de subprocesos múltiples para crear información a partir de visualizaciones de datos dinámicos en sus informes.

Introducción al contexto de filtro en LuckyTemplates

Introducción al contexto de filtro en LuckyTemplates

En este artículo, repasaré el contexto del filtro. El contexto del filtro es uno de los temas principales que cualquier usuario de LuckyTemplates debería conocer inicialmente.

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Quiero mostrar cómo el servicio en línea de LuckyTemplates Apps puede ayudar a administrar diferentes informes e información generada a partir de varias fuentes.

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Aprenda a calcular los cambios de su margen de beneficio utilizando técnicas como la bifurcación de medidas y la combinación de fórmulas DAX en LuckyTemplates.

Ideas de materialización para cachés de datos en DAX Studio

Ideas de materialización para cachés de datos en DAX Studio

Este tutorial analizará las ideas de materialización de cachés de datos y cómo afectan el rendimiento de DAX al proporcionar resultados.

Informes comerciales con LuckyTemplates

Informes comerciales con LuckyTemplates

Si todavía usa Excel hasta ahora, este es el mejor momento para comenzar a usar LuckyTemplates para sus necesidades de informes comerciales.

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber