Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Modificación del cálculo de DAX para el vencimiento en función del mes seleccionado

He creado el siguiente DAX para calcular el envejecimiento a partir de HOY. Ahora, necesito modificar este DAX para calcular el envejecimiento a partir del mes seleccionado (último día del mes). ¿Cómo puedo lograr esto?

Cuando hago clic en el mes, como el 23 de diciembre en la segmentación, el vencimiento debería cambiar según el último día del mes para el 23 de diciembre, que será el 31 de diciembre. Cualquier fecha de vencimiento posterior al 31 de diciembre de 2023 debe estar en el tramo actual, y cualquier fecha de vencimiento en o antes debe estar dentro de los meses definidos en el DAX.

Cuando cambio y hago clic en el mes, como el 24 de marzo en la segmentación, el vencimiento debería cambiar según el último día del mes para el 24 de marzo, que será el 31 de marzo de 2024. Cualquier fecha de vencimiento posterior al 31 de marzo de 2024 debe estar en el tramo actual, y cualquier fecha de vencimiento en o antes debe estar dentro de los meses definidos en el DAX.

¿Sería mejor lograr estos resultados a través de una columna calculada o una segmentación?

Se adjunta el informe de muestra. Haga clic aquí

Envejecimiento =
Fueron _datediff = DATEDIFF(Due_Date[Due_Date], HOY(),MES)
DEVOLUCIÓN INTERRUPTOR(VERDADERO(),
_datediff <= 0,"Actual",
_datediff = 1,"1 mes",
_datediff = 2,"2 meses",
_datediff = 3,"3 meses",
_datediff >= 4 && _datediff <= 6,"4-6 meses",
_datediff >= 7 && _datediff <= 9,"7-9 meses",
_datediff >= 10 && _datediff <= 12,"10-12 meses",
_datediff >12,"Más de 12 meses",
"0")
11 REPLIES 11
Syndicate_Admin
Administrator
Administrator

Hola @InsightSeeker ,

Ya no pude ver el archivo de muestra en su enlace porque parece haber sido eliminado. De todos modos, sin mirar el archivo de muestra, asumo que está tratando de preparar un informe de antigüedad de cuentas por cobrar o algo así. Por favor, hágamelo saber si este no es el caso. Si necesita preparar el perfil de envejecimiento de la instantánea en momentos del pasado, debe descargar lo siguiente en datos sin procesar.

  • todas las listas de transacciones de cuentas por cobrar con el número de cliente, la fecha de contabilización y la fecha de vencimiento neto en el módulo de cuentas por cobrar para el registro histórico anterior, o
  • Abrir listas de artículos por clientes con fechas de contabilización y fechas de vencimiento netas del módulo AR en cada fecha de fin de mes en su período de análisis.

La ventaja de descargar las listas de elementos abiertos en lugar de descargar todas las listas de transacciones es que, dado que su análisis se centra en cuál es la lista de antigüedad de elementos abiertos en un momento dado, puede reducir el volumen de datos de esta manera, pero el número de veces que necesita descargar será tantas como fechas de fin de mes desee analizar. por lo que se requerirá alguna actividad de descarga repetitiva de su ERP.

Aunque no pude ver sus datos, asumo que sus datos son como la 1ª opción de todos los datos de transacciones, ya que las listas de partidas abiertas no podrán cubrir los saldos compensados anteriores que no existen en sus datos.

Debido a que su envejecimiento debe referirse a la selección de su cortadora, no puede utilizar el enfoque de columna calculada en este caso, ya que fijará el número de días de envejecimiento en un momento específico.

Además, si está utilizando todos los datos de transacciones que cubren todo el período, el saldo de cuentas por cobrar de su balance general en cualquier momento de su selección es la suma acumulada de todas las ventas y cobros en efectivo desde el inicio registrados en su cuenta de LM utilizando la fecha de registro.

Hay un artículo que discute el cálculo del envejecimiento usando la lista de elementos abiertos (no el primer tipo de datos). El uso de la lista de elementos abiertos es más fácil que el uso de todos los datos históricos de transacciones. Sin embargo, para el análisis de períodos de informes múltiples, debe descargar listas de elementos abiertos en cada período de informe y combinarlas en un archivo, agregando un campo de identificación como el campo de fecha de informe para indicar en qué fecha basar el cálculo de la antigüedad (es decir, la fecha de vencimiento neto menos la fecha de informe). Porque envejecer es siempre con respecto a la fecha de referencia, como el tiempo corre todo el tiempo, envejecer ayer no es lo mismo que envejecer hoy .

https://p3adaptive.com/reducing-dso-using-power-pivot/

Saludos

Hola @DataNinja777 A continuación encontrará el enlace a mis datos.

Haga clic aquí

Gracias @InsightSeeker por compartir los datos de muestra conmigo.

Tengo un par de observaciones.

1) Su tabla 'Calendar Ultimate' no cubre todo el período de la fecha de la factura y, debido a esto, no todos los datos de la tabla de hechos se pueden cortar de la tabla 'Calendar Ultimate'. Para contrarrestar este problema, he creado una tabla de calendario calculada que cubre todo el período de las fechas de la factura.

DataNinja777_0-1716019548978.png

2) Otra observación sobre sus datos es que sus 'Datos' solo contienen la información de la factura y no el cobro en efectivo. De hecho, el concepto del saldo de cuentas por cobrar es "Registro de facturas menos cobro en efectivo" para el balance general. Por lo tanto, a diferencia de los montos de ventas de pérdidas y ganancias que solo se acumulan durante el período del año hasta la fecha, el saldo de las cuentas por cobrar del balance general es el total acumulado desde el inicio sumando la factura y restando el cobro en efectivo. Sin la información de cobro en efectivo, no puede decir si la factura aún está pendiente o compensada por el cobro en efectivo en un momento determinado. Debido a esto, a partir de los datos de su muestra, solo podremos ver el vencimiento de la factura en un momento particular sin incorporar la segunda parte de la historia si esa factura aún está pendiente en ese momento en particular para empezar. ¿O esas invocaciones siguen pendientes y aún no se han cobrado?

Continuaré con la 2ª suposición, pero me gustaría comprobar con ustedes estos puntos primero.

Saludos

Hola @DataNinja777 - Gracias por ayudar e investigar esto.

Para el punto 1, no me di cuenta de que la tabla 'Calendar Ultimate' no cubre todo el período. Voy a corregir esto ahora.

Para el punto 2, mis datos originalmente se parecen al ejemplo a continuación, pero en los datos que compartí con usted, solo he proporcionado el Monto Adeudado (Saldo).

Customer_CodeInv_NbrInv_DateInv_AmtPaid_AmtDue_AmountSubmission_DateDue_Date
123456123241-Jul-232510 2,510 - 01-Ago-2301-Oct-23
126001323132-jul-232860 2,860 - 17-Ago-2317-Ago-23
123456212121-Jul-232510 - 2,51001-Ago-2301-Oct-23
12600112122-jul-232860 - 2,86017-Ago-2317-Ago-23

Hola @InsightSeeker ,

De acuerdo. El panorama es ahora más claro. Para obtener información sobre la antigüedad de las cuentas recibidas en un momento determinado, debe utilizar los campos de importe de la facturación, fecha de la facturación y importe pagado y fecha de pago en lugar de la columna del importe adeudado, que depende del estado de la fecha particular. Si solo basamos nuestro análisis en la columna [Due_Amount], nuestro análisis se restringirá a la cantidad debida a partir de la fecha en que se extrajeron los datos, y no podemos realizar un análisis flexible para varios períodos porque las cifras de la tabla de hechos que proporcionó solo proporcionan el estado del AR a partir de la fecha particular en que se descargaron los datos. Por lo tanto, para realizar el análisis correcto en varios períodos en lugar de solo a partir de la fecha en que se extrajeron los datos, también debemos utilizar el monto de la factura y el monto pagado en lugar de solo Due_Amount información.

Saludos

Syndicate_Admin
Administrator
Administrator

En el modelo, ha vinculado la tabla de caledar a la fecha de la factura, de modo que cuando seleccione un mes, solo vea las facturas de ese mes. Eso no permite el comportamiento dinámico que está buscando.

@jdbuchanan71 - Incluso si cambio mi modelo de la fecha inv a la fecha de vencimiento, todavía no obtengo los resultados deseados. Mi resultado siempre muestra 0 para todos.

Syndicate_Admin
Administrator
Administrator

Con base en su selección de agosto-23, ¿qué le gustaría ver en la columna de envejecimiento? No me queda claro lo que estás tratando de lograr.

jdbuchanan71_0-1715954511135.png

Hola @jdbuchanan71 - Al hacer clic en Ago '23, el vencimiento debe calcularse a partir de la fecha de vencimiento a partir del último día de Ago '23, y debería mostrar todas las transacciones. Cuando se utiliza el corte, solo se cambia el envejecimiento en función del mes seleccionado. Debería mostrar todas las transacciones.

Criterios:
- Si has seleccionado Ago '23, el resultado debería ser:
- Si la diferencia mensual entre la fecha de vencimiento y el 23 de agosto es 0 o menos, debe estar en el grupo "Actual".
- Si la diferencia de mes entre la fecha de vencimiento y el 23 de agosto es de 1, 2 o 3, debe estar en el rango de "1 mes".
- Si la diferencia mensual entre la fecha de vencimiento y el 23 de agosto es igual a 4 o menor o igual a 6, debe estar en el grupo de "4-6 meses".
- Si la diferencia mensual entre la fecha de vencimiento y el 23 de agosto es igual a 7 o menor o igual a 9, debe estar en el rango de "7-9 meses".
- Si la diferencia mensual entre la fecha de vencimiento y el 23 de agosto es igual a 10 o menor o igual a 12, debe estar en el grupo "10-12 meses".
- Si la diferencia mensual entre la fecha de vencimiento y el 23 de agosto es mayor que 12, debe estar en el rango "Más de 12 meses".

Espero que lo anterior haya quedado claro. Por favor, no dude en hacérmelo saber si necesita más información.

Syndicate_Admin
Administrator
Administrator

@InsightSeeker

No se puede hacer como una columna calculada porque solo se actualizan cuando se actualiza el modelo, no cuando un usuario realiza una selección en una segmentación. También puedes simplemente mejorar un poco tu SWITCH empezando por la parte superior.

Aging Measure = 
VAR _EndDate = MAX('Calendar Ultimate'[Date])
VAR _Due_Date = SELECTEDVALUE(Due_Date[Due_Date])
var _datediff = DATEDIFF(_Due_Date, _EndDate,MONTH)
RETURN SWITCH(TRUE(),
    _datediff >12,"Above 12 Month",
    _datediff >= 10, "10-12 Month",
    _datediff >= 7,"7-9 Month",
    _datediff >= 4,"4-6 Month",
    _datediff = 3,"3 Month",
    _datediff = 2,"2 Month",
    _datediff = 1,"1 Month",
    _datediff = 0,"Current",
    _datediff < 0, BLANK(),
    "0")

jdbuchanan71_0-1715882617464.png

Hola @jdbuchanan71 - Cuando intento usar la misma medida en mis datos, no funciona.

Además, he cambiado ligeramente mis datos y aquí está el archivo actualizado.

Haga clic aquí

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

Top Solution Authors
Top Kudoed Authors