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.


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