Tutorial de DAX Language LuckyTemplates en TOPN inverso

Tutorial de DAX Language LuckyTemplates en TOPN inverso

En esta publicación de blog, vamos a echar un vistazo a una pregunta que se hizo en el foro de LuckyTemplates y usaremos una técnica de LuckyTemplates del lenguaje DAX para resolverla. En caso de que quiera seguir y descargar los archivos, simplemente visite el foro de LuckyTemplates y vaya a . Puedes ver el video completo de este tutorial en la parte inferior de este blog.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Para explicar el escenario que vamos a cubrir, tenemos una tabla simple como ejemplo. En la primera columna, tenemos el Nivel financiero 1 . En la segunda columna, tenemos una fecha que se denomina Completado. En la última columna, tenemos la combinación de nivel financiero y fecha de finalización, que llamaremos Ingresos .

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Luego tenemos una segmentación para la fecha y el nombre del cliente .

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Lo que queremos hacer para un período de tiempo específico es identificar las tres fechas principales que no son cero. Y luego, en esas tres fechas principales, queremos identificar el nivel financiero.

En la primera versión de la medida, enumeré las fechas que son menores al 29/04/2021 en las que tenemos algunos ingresos.

Y en estas fechas, queremos identificar los niveles financieros que han generado algunos ingresos. Te explicaré cómo podemos lograr ese cálculo.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Tabla de contenido

Modelado de datos

Antes de escribir el DAX real, echemos un vistazo rápido al modelo de datos que contiene varias tablas. Sólo estamos interesados ​​en la tabla de fechas , la tabla de datos , la tabla de categorías de trabajo y la tabla de clientes .

Tenga en cuenta que la tabla Customer no es realmente importante porque solo se usa dentro de una segmentación.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

La medida de ingresos se calcula en la tabla de datos. La categoría Trabajo contiene el nivel financiero que tenemos en la matriz. Luego estamos usando la columna Fecha de la tabla Fecha en nuestra segmentación.

Versión 1

Deshagámonos de todo de la matriz y comencemos desde cero. Voy a crear una nueva medida y la llamaré V1 porque esta será la versión uno. También vamos a echar un vistazo a otras dos variaciones.

Preparando el contexto del filtro

Lo primero que vamos a hacer es recuperar todos los valores del nivel financiero del contexto del filtro. Crearemos una y la nombraremos como FinancialLevelInFilterContext .

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Para recuperar los valores del contexto del filtro, vamos a utilizar la en la tabla de categorías de trabajo que contiene la columna de nivel financiero. Luego necesitamos crear otra variable y nombrarla Result . Luego escriba y ciérrelo también.

En el primer argumento, tenemos una selección sobre la segmentación de fecha. En esas fechas, queremos identificar las fechas que no tienen un 0 y tienen al menos algún ingreso.

Si desea acceder a todas las fechas que están seleccionadas en esa segmentación, debemos usar la sobre la tabla de fechas.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Y dado que tenemos el nivel financiero en la matriz, también debemos asegurarnos de que estamos eliminando ese valor particular del contexto del filtro. Podemos usar la sobre la categoría de trabajo y luego escribir Nivel financiero 1.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Ahora que nuestro contexto de filtro está preparado, podemos escribir el cálculo más interno para CALCULAR. Primero, declararemos una variable, que será una combinación del nivel financiero y la columna de fecha como hemos visto en la primera tabla.

Luego, usaremos la y la tabla de datos para resumir estas dos tablas: categoría de trabajo y tabla de fechas.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Esto proporcionará la combinación del nivel financiero y la columna de fecha que existe dentro de la tabla de datos. Luego vamos a crear otra variable donde almacenaremos el valor de la fila de ingresos para la primera variable que hemos creado.

El nombre de esta variable será FinancialLevelAndDatesWithRevenue . El código de esta variable será sobre la variable anterior. Luego crearemos una columna virtual que será Ingresos para iniciar la transición de contexto. Entonces, para cada fila de esta variable, hemos asignado los ingresos.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Esta tabla contiene los ingresos, que también tienen cero. Necesitamos filtrar esas filas con cero. Para hacer esto, podemos crear otra variable y nombrarla como RemoveZeroes .

Usaremos la en la variable anterior, luego nos aseguraremos de que los ingresos no sean iguales a cero. Puede ser mayor que cero o menor que cero, pero no debe ser estrictamente igual a cero.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Y luego vamos a recuperar la fecha de la variable RemoveZeroes . Para hacer esto, podemos crear otra variable y nombrarla KeepOnlyDates .

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Puedo usar la para deshacerme de las fechas duplicadas que devuelve la .

Tutorial de DAX Language LuckyTemplates en TOPN inverso

A continuación, vamos a identificar las tres fechas principales en orden descendente. Usaremos otra variable y la llamaremos Last3Dates , luego usaremos la .

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Luego usaremos sobre las últimas tres fechas en la columna de fecha, luego usaremos un delimitador.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Arrastremos y sueltemos nuestra medida recién creada dentro de esa matriz. El resultado que obtenemos es 31/03/2021, 07/04/2021 y 02/04/2021. Esto significa que nuestra medida está funcionando.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Volvamos al editor y deshagámonos de la parte RETURN CONCATENATEX. Para recuperar esas últimas tres fechas, lo que podemos hacer es verificar qué filas de la variable RemoveZeroes son en realidad parte de esas últimas tres fechas.

Y para eso, crearemos otra variable DatesInLast3Dates y usaremos la función FILTER en RemoveZeroes . Esto devolverá una tabla que se compone de una categoría de trabajo y una fecha.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Resumiremos la columna de ingresos que hemos creado dentro de esa tabla. Devolvamos SUMX sobre DatesInLast3Dates, luego resumamos la columna de ingresos.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Con este cálculo, solo obtenemos un único valor para cada fila, porque hemos eliminado la categoría Trabajo del contexto del filtro.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Usaremos la variable que hemos creado al principio para verificar si cada fila de la variable DatesInLast3Dates está disponible en el contexto del filtro. Podemos escribir otra variable y nombrarla IsInFilterContext .

Esto filtrará las fechas en la variable DatesInLast3Dates . Luego devolveré SUMX sobre el contexto IsInFilter y resumiré la columna de ingresos.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Una vez que presionamos Enter , puede ver que obtenemos el mismo resultado que teníamos al principio.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Verificación del resultado del cálculo de LuckyTemplates del lenguaje DAX

Para verificar que realmente estamos obteniendo el resultado correcto, podemos crear una nueva tabla CALCULATE que nos ayudará a depurar, identificar y verificar que el código que hemos escrito hasta ahora realmente devuelve el resultado correcto.

Vamos a crear una copia del código que hemos escrito hasta ahora. Simplemente voy a copiar la parte que está resaltada a continuación, volveré a crear una nueva tabla y pegaré el código resaltado. No nos vamos a molestar en nombrar esta tabla porque no nos interesa.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Y simplemente podemos escribir RETURN DatesInLast3Dates . Si hago clic en Confirmar , obtenemos una tabla, pero sabemos que todavía no está devolviendo el resultado correcto porque necesitamos imitar el comportamiento de la segmentación.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Podemos envolver ese código dentro de una TABLA CALCULABLE y sangrar todo. En la última parte, voy a escribir que la fecha debe ser mayor o igual a 2021-03-15 y que el nombre del cliente debe ser igual a DHL Supply Chain .

Tutorial de DAX Language LuckyTemplates en TOPN inverso

La tabla que hemos creado dentro de esa medida está devolviendo virtualmente el resultado correcto. Podemos usar un CALCULATETABLE para verificar la tabla virtual que está creando dentro de su cálculo.

Otros cálculos de LuckyTemplates del lenguaje DAX

Ahora que sabemos que nuestro cálculo está funcionando y entendemos lo que realmente está sucediendo detrás de escena, podemos buscar otros métodos para calcular el mismo problema. En primer lugar, creemos un duplicado de la medida que ya hemos creado.

Versión 2

Esta vez, no vamos a depender de las funciones VALUES y FILTER, así que nos desharemos de ellas. Eliminaremos el resultado devuelto, así como la última variable que hemos creado dentro de CALCULATE. Luego, convertiremos CALCULATE en CALCULATETABLE.

Y en lugar de devolver un valor escalar, esta vez devolveremos DatesInLast3Dates . Esto devolverá la misma TABLA CALCULABLE que hicimos antes. Vamos a utilizar la función CALCULATE, y en el primer argumento, vamos a calcular la medida de ingresos e inyectar CALCULATETABLE como contexto de filtro.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Una vez que lo traigo a la matriz, puede ver que estamos devolviendo el mismo valor total general para cada celda.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Uso de la función MANTENER FILTROS

Por el momento, sabemos que el cálculo detrás de escena está funcionando correctamente, pero ¿cómo podemos estar seguros de que para cada celda, solo estamos informando el valor para ese nivel financiero?

Con la ayuda de CALCULATETABLE, hemos creado una tabla que contiene el nivel financiero, la columna de fecha y la columna de ingresos. Podemos usar la función de filtro clave para crear una intersección entre el contexto de filtro que existe fuera de CALCULATETABLE y el que está siendo creado por CALCULATETABLE.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Una vez que hacemos clic en Confirmar, podemos ver que estamos informando el valor correcto para cada celda y que tanto la versión 1 como la versión 2 están devolviendo el valor correcto.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Entonces, ¿cómo funciona esto? La tabla CALCULAR devolverá el nivel de Mantenimiento , luego Alquiler , Servicio Externo y Repuestos . La va a crear una intersección entre el mantenimiento y esa tabla.

Rental creará el contexto de filtro inicial, luego CALCULATETABLE devolverá todos los valores de la categoría de trabajo. Luego habrá una intersección entre Rental y la tabla devuelta por CALCULATETABLE. Solo devolveremos las tablas o las filas solo para esa parte de alquiler.

Y finalmente, cuando inyectamos RESUMEN en el contexto del filtro, la función CALCULAR calculará los ingresos solo para Alquiler. El mismo proceso ocurre para cada fila.

Versión 3

Veamos otra forma de realizar el mismo cálculo utilizando el lenguaje DAX LuckyTemplates. Vamos a crear una copia de la medida de la Versión 2 y crear otra medida. Vamos a nombrar esta versión 3.

La idea detrás de este cálculo es que, dado que estamos calculando los ingresos mediante la función CALCULATE, no necesitamos usar la parte ADDCOLUMNS porque estamos duplicando lo mismo dentro y fuera de CALCULATE. En su lugar, podemos simplemente escribir que el Ingreso no debe ser igual a 0.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Una vez que hago clic en Confirmar, debemos asegurarnos de que el código funciona, así que arrastremos la medida dentro de la matriz.

Puede ver que el código en realidad devuelve el mismo valor para cada celda.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Si trato de cambiar el contexto del filtro cambiando la fecha en la segmentación de fecha y seleccionando un par de valores del Nombre del cliente, puede ver que las tres medidas en realidad devuelven el mismo valor para cada fila.

Tutorial de DAX Language LuckyTemplates en TOPN inverso

Conclusión

En este tutorial, aprendimos a usar una lógica compleja de retroceder en el tiempo desde la fecha de finalización para identificar las tres fechas principales. Según esta técnica de LuckyTemplates del lenguaje DAX, pudimos calcular los ingresos y mostrar solo los valores que existen en el contexto del filtro. Eso es todo por ahora en este tutorial.


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.