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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
goutdelete
Regular Visitor

Calcular cargos por retraso con diferentes políticas de atrasos en diferentes períodos

Hola tengo una tabla de historial de transacciones como esta y necesito calcular algo con diferentes políticas bajo diferentes períodos de tiempo.

Digamos que soy un bibliotecario y mi antigua política es que cualquiera puede devolver libros tarde los primeros dos meses (no tiene que ser consecutivo) sin penalización, después de todos los días it's $0.5 dólares por retraso por día.

He cambiado la política del 1 de julio a: cualquier persona obtiene 2 tiempo gratis pase, pero me recaudó mi cargo por retraso a $1 por día tarde.

Más tarde decidí no dar ninguna política de cortesía más, así que a partir de Oct 1 cambié mi política de nuevo a: no hay pases gratis, tan pronto como alguien devuelve el libro tarde, los cargos por mora se convierten en $2 por día.

goutdelete_0-1609365418068.png

Finge que sé que el prestatario A y C no devolverán libros a finales de año y estoy preparando el estado total de cuotas para cada persona (es decir, A y C serán 20 y 31 días de atraso, respectivamente). ¿Cuál es la función Dax que debería usar para realizar la tarea?

En mi cabeza necesito producir algún contador (o rango) tanto por fecha de transización como por mes transaccional (ya que en un momento en el momento en que la política no importa cuántas transacciones se producen en esos dos meses que tampoco tienen que ser consecutivas). Busqué en Google casi todo el foro y youtube que puedo y no pude encontrar una función que funcione para mí..

Muy apreciado!!

4 REPLIES 4
v-kelly-msft
Community Support
Community Support

No @goutdelete,

Puede utilizar la función DATEDIFF para calcular las diferencias de fecha entre "Fecha de devolución de destino" y "Fecha de devolución real", a continuación, varias de las penalizaciones relacionadas para obtener el resultado que necesita.

En cuanto a la política de julio especial, puede crear una columna de recuento como se muestra a continuación:

Count = 
var _actualdate=IF(ISBLANK('Table'[Actual Return date]),DATE(2020,12,31),'Table'[Actual Return date])
Return
 IF('Table'[Target return date]>DATE(2020,7,1)&&'Table'[Target return date]<DATE(2020,10,1)&&_actualdate>'Table'[Target return date],1,0)

Una vez que count-1, significa que la fila está vencida y cumple con la política de julio.

En cuanto a contar los tiempos de retraso respectivamente, podría utilizar la siguiente expresión dax en una medida:

_total overdue times=SUMX(FILTER(ALL('Table'),'Table'[Borrower]=MAX('Table'[Borrower])&&'Table'[Date of borrowing]<MAX('Table'[Date of borrowing])),'Table'[Count])

¿Podrían identificar si el período de fecha entre "fecha de endeudamiento" y la fecha de devolución objetivo o la fecha de devolución objetivo y la fecha de devolución real se realizarán en las tres políticas?

Saludos
Kelly

¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!

AllisonKennedy
Super User
Super User

@goutdelete ¿Tiene una tabla de políticas con fechas efectivas de sus políticas de tarifas tardías? Si es así, es posible que desee utilizar una búsqueda aproximada para ver qué directiva está en vigor y, a continuación, basar el cálculo en eso: https://excelwithallison.blogspot.com/2020/06/dax-approximate-lookup.html

Si no es así, puede codificar de forma rígida las directivas en su DAX, podría ser mejor usar un conmutador

¿Qué columnas ya tiene, qué necesita calcular?


Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

Hay @AllisonKennedy

Muchas gracias por sus comentarios. Así que esta es una versión "simplista" de la pregunta en realidad; actualmente todo se hizo en Excel y estoy en el medio tratando de hacerlo más automatizado y menos errores manuales. Hacer una tabla de políticas con fecha(s) de vigencia es sin duda una buena sugerencia, pero necesito darle algunos pensamientos más ya que aparte de las fechas de corte puede no ser tan fácil formar una tabla cuando las reglas son muy diferentes (es decir, cierto período se trata de .

En mi conjunto de datos (sistema) tengo los primeros 4 puntos de datos, necesito calcular "días atrasados" para pasar al siguiente calc (todo manualmente en Excel). Esencialmente ahora mismo en excel manipulamos "días/ días atrasados" basados en las reglas: si una ofensa puede ser perdonada entonces se ignora (días atrasados 0).

@goutdelete , Pruebe una nueva columna como esta. Cambie la fecha según la política . Interruptor usado para que pueda agregar más condiciones

nueva columna ?
var _1 á fecha(2020,07,01)
var _2 á fecha(2020,10,01)
Var _3 á countx(filter(Table, [Borrower] ?earlier([Borrower]) && [Fecha de devolución real] > ? _1 && [Fecha de devolución real] <_2
&& [Fecha de devolución real] <-earlier([Fecha de devolución real])),[[Fecha de devolución real]]) +0
devolución
Switch( true(),
[Fecha de devolución real] <_1 && [Fecha de devolución real] >_2 , [Día en atrasos] *2 , // Antes de julio Después de octubre mismo
_3 >2 && [Día en Arrears] >0 , [Día en Atrasos] * 1 ,
0
)

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.