Cálculo DSO DAX – Método de cuenta regresiva

Un usuario Pregunto ✅

Polígono

Su ayuda es muy necesaria por favor. Estoy buscando el cálculo DAX para calcular DSO usando el método de cuenta atrás.

Cálculo de DSO en diciembre:

Ago Sep Oct Nov Dic

Ventas Netas 154 159 167 158 205

F/R 405

DSO (días) 68

Cálculo de días

Cálculo: 30 de diciembre 405-205=200

30 de noviembre 200-158 = 42

8 de octubre 42 – 167 <0; (42/167)*30=8

=============

68

En segundo lugar, tendré que hacer esto retrocediendo, por ejemplo, ¿cuál fue el DSO el 28 de noviembre? el 31 de octubre, el 31 de septiembre, etc.; para crear un gráfico de DSO por mes con un KPI para la línea de tendencia de aumento/disminución.

Espero haberme explicado esto correctamente.

¡Gracias!

paula

RAVISHhcl

¿Alguien tiene la solución en la que podemos filtrar dinámicamente el cálculo de DSO en diferentes hojas geográficas?

maxgab1968

Hola,

Usé la medida pero no puedo hacer que funcione para las dimensiones, por ejemplo, por área geográfica, después de haber relacionado las columnas.

Atentamente.

Ymir

Oye, solo tengo curiosidad por saber si alguna vez obtuviste una solución a este problema. He estado buscando para resolver el problema exacto.

bcteh

Puede lograr la cuenta regresiva haciendo un bucle de cálculo dentro de la fórmula sumx junto con las variables.

DSO (CB) = 

SUMX(
    // outer loop
    VALUES('Transaction'[Period]),
    VAR daysInMonth = 30
    VAR ocurrPeriod = 'Transaction'[Period]
    VAR ocurrARBal = CALCULATE(SUM('Transaction'[A/R]) , FILTER('Transaction', 'Transaction'[Period]=ocurrPeriod))
    
    RETURN 
    
    SUMX( 
        // inner loop
        FILTER(ALL('Transaction'[Period]), 'Transaction'[Period]<=ocurrPeriod),
        VAR icurrPeriod = 'Transaction'[Period]
        VAR icurrRev = CALCULATE(SUM('Transaction'[Net Sales]) , FILTER(ALL('Transaction'), 'Transaction'[Period]=icurrPeriod))

        VAR revSUMX =
                CALCULATE( 
                    SUMX('Transaction', [Net Sales]), 
                    FILTER(ALL('Transaction'), 'Transaction'[Period] >= icurrPeriod && 'Transaction'[Period]<=ocurrPeriod)
                )

        VAR revSUMXP =
                CALCULATE( 
                    SUMX('Transaction', [Net Sales]), 
                    FILTER(ALL('Transaction'), 'Transaction'[Period] > icurrPeriod && 'Transaction'[Period]<=ocurrPeriod)
                )

        VAR pleft = ocurrARBal - revSUMXP
        VAR cleft = ocurrARBal - revSUMX	
        VAR multiplier =
            IF (ocurrARBal > revSUMX, 1,
                Divide(pleft, icurrRev)
            )
        
        VAR result = IF (multiplier > 0 || cleft > 0,
            daysInMonth * multiplier, 
            0)
        
        RETURN
        result
    )
)

Ymir

En respuesta a bcteh

Oye esto es interesante.

Sería tan amable de adjuntar el archivo pbix con la solución anterior (si la tiene).

Muchas gracias

bcteh

En respuesta a Ymir

bcteh_0-1629859667720.png

Aquí tienes… el fragmento del archivo.

El archivo PBIX se comparte en una unidad a continuación.
Cuenta atrás DSO.pbix

Ymir

En respuesta a bcteh

Muchas gracias 🙂 Esto me ahorró mucho trabajo.

RAVISHhcl

En respuesta a Ymir

Estoy trabajando en cálculos de DSO y mis valores de DSO deberían calcularse dinámicamente de acuerdo con diferentes agregaciones geográficas.

¿Puedes compartir cómo lo has logrado?

Ashish_Mathur

Hola,

¿Pudiste obtener una solución a este problema?

v-joesh-msft

Hola @Polygon,

Estoy un poco confundido por tu descripción. Los datos de muestra y el resultado esperado serían de gran ayuda. Consulte esta publicación sobre cómo obtener una respuesta rápida a su pregunta:
https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490

Atentamente,

Equipo de apoyo comunitario _ Joey
Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución. para ayudar a los otros miembros a encontrarlo más rápidamente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *