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

Echemos otro vistazo al problema discutido en este tutorial , que comparó dinámicamente los primeros N días hábiles de cada mes. Este problema se basó en una consulta de un miembro de LuckyTemplates en nuestro foro, donde quería buscar y comparar dinámicamente los primeros 5, 10, 15 y 20 días facturables (los que no son fines de semana ni festivos) de un mes determinado con el mes anterior.

En lugar de utilizar Power Query, propondremos una solución de lenguaje de codificación DAX. Puedes ver el video completo de este tutorial en la parte inferior de este blog.

En el primer video , se me ocurrió una solución de consulta de energía sobre cómo resolver este problema. Pero luego, uno de nuestros expertos de LuckyTemplates, Antriksh Sharma, ideó una medida brillantemente eficiente en la que también vale la pena profundizar. Analizaremos algunas de las técnicas que usó para desarrollar una medida, que le brindarán herramientas adicionales en su caja de herramientas DAX.

Ciertamente lo hizo para mí y para algunos de los otros expertos que echaron un vistazo a esto. La comparación similar de días hábiles comparables entre meses es un patrón valioso en general que se puede usar en muchas situaciones.

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

Profundicemos en Power Query y echemos un vistazo a lo que hizo Antriksh aquí. Tenemos el mes y el año , las ventas totales y, por último, las ventas totales de N días hábiles que seleccionamos mediante la consulta avanzada en función del parámetro hipotético que desarrollamos.

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

Antriksh tomó un enfoque muy diferente, donde usó una medida sorprendentemente corta para resolver todo este problema. Lo primero que noté sobre esto fue el uso del comando .

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

Esta es una función DAX que no uso muy a menudo, pero es perfecta para este tipo de problema. Si echamos un vistazo a la Guía SQL BI DAX, dice que la función GENERAR es una función de tabla que usa como entrada dos tablas diferentes, y luego hace un equivalente del comando SQL CROSS APPLY.

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

Así que toma una tabla base (Tabla 1) e itera sobre eso, y luego toma una segunda expresión de tabla y la evalúa para cada fila en la primera tabla, y luego regresa a la tabla como salida.

Tomemos la medida de Antriksh y colóquela en la mesa. Podemos ver que produce exactamente los mismos resultados que la solución de consulta de energía que hicimos la última vez. Así que eso es bueno y valida ambas medidas bastante bien.

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

Desmontemos esta medida aparte. El primer filtro aplicado aquí es Fechas[IsBusinessDay] = TRUE. Esto elimina todas las fechas que no son de fin de semana ni de vacaciones según el campo IsBusinessDay de la tabla de fechas extendida.

Hablamos mucho más sobre esto en el primer tutorial , donde también explicamos cómo vincular eso a nuestra mesa festiva.

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

La parte interesante de esto realmente viene en las dos entradas de la tabla. La primera tabla es solo una tabla de una columna del campo Mes y año en la tabla Fecha.

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

Pero la entrada de la segunda tabla es donde suceden las cosas interesantes. Antriksh usó una y luego usó nuestro parámetro dinámico como el número de filas en el TOPN.

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

La medida Ventas totales se adjunta a la segunda tabla y luego se aplica a la primera tabla.

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

Tabla de contenido

Comprensión de una medida compleja mediante el lenguaje de codificación DAX

Una de las formas más fáciles de averiguar qué está haciendo una medida compleja como esta es ir al Editor Tabular . Podemos echar un vistazo a esta expresión y averiguar qué está haciendo esta expresión TOPN primero.

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

Copiemos la parte TOPN y creemos una nueva consulta DAX . Recuerde que las consultas DAX comienzan con EVALUATE.

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

Cuando peguemos la porción TOPN, veremos que esto está extrayendo las primeras 5 fechas de la tabla de órdenes de venta. Hay una tabla en el TOPN que se compone de los valores de todas las fechas de pedido dentro de la tabla de ventas.

Esta función TOPN toma el valor del parámetro hipotético (que en este caso es 5) y lo aplica al campo de fecha del pedido de ventas. Luego, extrae las primeras 5 fechas dentro del contexto del filtro en orden ascendente según ese campo.

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

Dado que no hay un contexto de filtro adicional, solo está extrayendo esas primeras 5 fechas de toda la tabla.

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

La columna @Sales solo agrega las ventas totales dentro del contexto de filtro adecuado a la tabla TOPN.

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

Hasta ahora, tenemos la primera tabla de Mes y año, la segunda tabla de TOPN de las primeras N fechas de la tabla de ventas y luego las ventas totales asociadas con eso.

Uso de la tabla GENERATE en lenguaje de codificación DAX

Echemos un vistazo a lo que está haciendo esta tabla GENERATE. Volveremos a Tabular Editor y crearemos una nueva consulta DAX.

Comenzaremos como siempre lo hacemos con EVALUAR, pegaremos la parte GENERAR del código y haremos clic en 5.

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

Podemos ver que para cada fila de la primera tabla, se está iterando y uniendo con las 5 filas de la tabla TOPN evaluadas en contexto con la función @Sales.

Ha tomado los primeros 5 días hábiles de abril, los primeros 5 días hábiles de mayo, los primeros 5 días hábiles de junio, y así sucesivamente hasta llegar al final de la primera tabla.

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

Esto es exactamente lo que necesitamos, y ahora se convierte en una cuestión relativamente simple de sumar esos valores. Tenemos el resultado (que es la variable de tabla de los resultados GENERAR) y luego necesitamos resumir la función @Sales.

Dentro del contexto, ahora estamos sumando los primeros 5 días hábiles en abril, los primeros 5 días hábiles en mayo, y así sucesivamente hasta llegar a nuestro total de $23,737,430, en cuyo caso no tiene contexto de mes y año para operar .

Esto resume toda la columna @Sales y nos da exactamente el mismo total que teníamos en nuestra solución de consulta de energía.

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

Puede ver que si cambiamos la segmentación a 10, obtenemos dinámicamente los mismos resultados con el lenguaje de codificación DAX que obtuvimos en Power Query.

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

También tenemos el gráfico de barras en la parte inferior que se ajusta dinámicamente para reflejar los cambios que hemos realizado.

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

Ajustar dinámicamente el título de la medida

Hay otro truco adicional que quería mostrarte. Puede crear un ajuste dinámico en su parámetro hipotético y vincularlo dinámicamente a un título de medida.

Por ejemplo, si cambiamos la segmentación en la parte superior a 15, cambiará dinámicamente el nombre de la medida en la parte inferior a Ventas totales para los primeros 15 días hábiles de cada mes .

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

Hay una manera fácil de hacer esto en DAX usando el formato condicional . Básicamente solo tomamos tres cuerdas. El primero es Total Sales for First , y luego concatenar eso con el valor que recolectamos del parámetro what-if, y luego simplemente vincularlo con el resto del título.

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

Luego vamos a lo visual, vamos a formato condicional del título y hacemos clic en fx .

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

Aplicaremos formato por valor de campo y elegiremos esa medida de título dinámico. Esto cambiará la selección del parámetro hipotético.

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

Conclusión

Lo que tenemos ahora es una solución completa que utiliza el lenguaje de codificación DAX. Hemos discutido una forma realmente creativa y eficiente de hacerlo usando la función GENERAR. Quiero agradecer a Antriksh por compartir su brillante conocimiento de DAX con nosotros. Aprendí mucho mientras revisaba su solución DAX, y espero que tú también lo hayas hecho.


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