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.


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.