DateDiff entre diferentes etapas

Un usuario Pregunto ✅

Anónimo

hola comunidad

Estoy tratando de calcular la duración promedio del ciclo de ventas.

En mi caso, estoy tratando de hacer una diferencia entre los datos de diferentes filas.

Por ejemplo, la oportunidad 0060Y00000J1tMvQAJ se creó el 19/03/2018 (Cada nueva oportunidad pasa automáticamente a la etapa Desafío). Esta oportunidad permaneció 490 días en Desafío, luego pasó a la etapa Valor el 22/07/2019 y 3 días después pasó a Solución. Como puede ver, una oportunidad no tiene el requisito de pasar por toda la etapa (desafío a solución, desafío a cerrado ganado).

Muchas gracias. carita feliz

Captura.PNG

Anónimo

Hola,

Finalmente encontré una manera de hacerlo. Creo que hay otra forma de simplificar la fórmula, pero está funcionando.

Muchas gracias por tu aporte.

Days Challenge = 
IF (
    'Opportunity Field History'[OldValue] = "Challenge";
    DATEDIFF (
        CALCULATE (
            MIN ( 'Opportunity Field History'[CreatedDate] );
            ALLEXCEPT (
                'Opportunity Field History';
                'Opportunity Field History'[OpportunityId]
            );
            'Opportunity Field History'[Field] = "created"
        );
        'Opportunity Field History'[CreatedDate];
        DAY
    );
    IF (
        'Opportunity Field History'[OldValue] = "Closing";
        DATEDIFF (
            CALCULATE (
                MIN ( 'Opportunity Field History'[CreatedDate] );
                ALLEXCEPT (
                    'Opportunity Field History';
                    'Opportunity Field History'[OpportunityId]
                );
                'Opportunity Field History'[NewValue] = "Closing"
            );
            'Opportunity Field History'[CreatedDate];
            DAY
        );
        IF (
            'Opportunity Field History'[OldValue] = "Solution";
            DATEDIFF (
                CALCULATE (
                    MIN ( 'Opportunity Field History'[CreatedDate] );
                    ALLEXCEPT (
                        'Opportunity Field History';
                        'Opportunity Field History'[OpportunityId]
                    );
                    'Opportunity Field History'[NewValue] = "Solution"
                );
                'Opportunity Field History'[CreatedDate];
                DAY
            );
            IF (
                'Opportunity Field History'[OldValue] = "Value";
                DATEDIFF (
                    CALCULATE (
                        MIN ( 'Opportunity Field History'[CreatedDate] );
                        ALLEXCEPT (
                            'Opportunity Field History';
                            'Opportunity Field History'[OpportunityId]
                        );
                        'Opportunity Field History'[NewValue] = "Value"
                    );
                    'Opportunity Field History'[CreatedDate];
                    DAY
                );
                BLANK ()
            )
        )
    )
)

Anónimo

Hola,

Finalmente encontré una manera de hacerlo. Creo que hay otra forma de simplificar la fórmula, pero está funcionando.

Muchas gracias por tu aporte.

Days Challenge = 
IF (
    'Opportunity Field History'[OldValue] = "Challenge";
    DATEDIFF (
        CALCULATE (
            MIN ( 'Opportunity Field History'[CreatedDate] );
            ALLEXCEPT (
                'Opportunity Field History';
                'Opportunity Field History'[OpportunityId]
            );
            'Opportunity Field History'[Field] = "created"
        );
        'Opportunity Field History'[CreatedDate];
        DAY
    );
    IF (
        'Opportunity Field History'[OldValue] = "Closing";
        DATEDIFF (
            CALCULATE (
                MIN ( 'Opportunity Field History'[CreatedDate] );
                ALLEXCEPT (
                    'Opportunity Field History';
                    'Opportunity Field History'[OpportunityId]
                );
                'Opportunity Field History'[NewValue] = "Closing"
            );
            'Opportunity Field History'[CreatedDate];
            DAY
        );
        IF (
            'Opportunity Field History'[OldValue] = "Solution";
            DATEDIFF (
                CALCULATE (
                    MIN ( 'Opportunity Field History'[CreatedDate] );
                    ALLEXCEPT (
                        'Opportunity Field History';
                        'Opportunity Field History'[OpportunityId]
                    );
                    'Opportunity Field History'[NewValue] = "Solution"
                );
                'Opportunity Field History'[CreatedDate];
                DAY
            );
            IF (
                'Opportunity Field History'[OldValue] = "Value";
                DATEDIFF (
                    CALCULATE (
                        MIN ( 'Opportunity Field History'[CreatedDate] );
                        ALLEXCEPT (
                            'Opportunity Field History';
                            'Opportunity Field History'[OpportunityId]
                        );
                        'Opportunity Field History'[NewValue] = "Value"
                    );
                    'Opportunity Field History'[CreatedDate];
                    DAY
                );
                BLANK ()
            )
        )
    )
)

Anónimo

¿Cómo se define un ciclo? Dado que puede tener oportunidades en diferentes etapas, uno debe saber qué finaliza una oportunidad para calcular la duración del ciclo. Las oportunidades que no se han terminado no deben tener una duración de ciclo. ¿O me estoy perdiendo algo?

Mejor
Darek

Anónimo

En respuesta a Anónimo

Hola Darek,

Lo que busco es la duración del ciclo por etapa, por lo que la cantidad promedio de días que una oportunidad permanece en una etapa específica.

Muchas gracias

Stachu

prueba este código para la medida

Measure =
VAR __OpportunityStartEnd =
    GROUPBY (
        'Opportunites',
        Opportunites[OpportunityId],
        "Start", MINX ( CURRENTGROUP (), 'Opportunites'[CreatedDate] ),
        "End", MAXX ( CURRENTGROUP (), 'Opportunites'[CreatedDate] )
    )
VAR __OpportunityLength =
    ADDCOLUMNS ( __OpportunityStartEnd, "Length", [End] - [Start] )
RETURN
    AVERAGEX ( __OpportunityLength, [Length] )

Anónimo

En respuesta a Stachu

Hola Stachu,

Muchas gracias por tu ayuda pero no funciona. Lo hice usando excel y para cada ID de oportunidad, tengo el número de días de estancia por etapa. Para eso estaba usando esta fórmula:

=SI(D427=»Valor»;MAXIFS(F:F;C:C;C427;D:D;D427)-MAXIFS(F:F;C:C;C427;E:E;D427);»»)

Muchas gracias

Captura.PNG

Stachu

En respuesta a Anónimo

Creo que la forma más fácil de hacerlo es calcular la duración del ciclo en la columna calculada, así:

Cycle Length =
VAR __OpportunityId = 'Opportunites'[OpportunityId]
VAR __CreatedDate="Opportunites"[CreatedDate]
VAR __PreviousStageDate =
    CALCULATE (
        MIN ( 'Opportunites'[CreatedDate] ),
        FILTER (
            ALL ( 'Opportunites' ),
            'Opportunites'[OpportunityId] = __OpportunityId
                && 'Opportunites'[CreatedDate] > __CreatedDate
        )
    )
VAR __PreviousStageDateNoBlanks =
    IF ( ISBLANK ( __PreviousStageDate ), __CreatedDate, __PreviousStageDate )
RETURN
    __PreviousStageDateNoBlanks - __CreatedDate

y luego calcule el promedio en función de eso (filtro 0 ciclos de duración, ya que el final del proceso es un punto en el tiempo y, por lo tanto, no tiene duración):

Cycle Avg Length =
VAR __OpportunityCycleLengthNo0s =
    FILTER ( 'Opportunites', 'Opportunites'[Cycle Length] <> 0 )
VAR __AverageCyclePerOpportunity =
    GROUPBY (
        __OpportunityCycleLengthNo0s,
        Opportunites[OpportunityId],
        "Avg", AVERAGEX ( CURRENTGROUP (), 'Opportunites'[Cycle Length] )
    )
RETURN
    AVERAGEX ( __AverageCyclePerOpportunity, [Avg] )

Usé el promedio para promediar los promedios de múltiples ID (esto solo se muestra cuando tiene múltiples ID en el contexto del filtro, por ejemplo, en la línea Total), ¿es esta su agregación prevista en este nivel?

Fantástico_Raab

En respuesta a Stachu

Hola, @Stachu. Estoy tratando de aplicar esto a una situación similar que tengo. Seguí el primer paso anterior y funcionó, pero el valor de retorno es una fecha, no una diferencia horaria. Me gustaría calcular el DATEDIFF entre un valor de fila anterior que tiene el mismo «OpportunityID». En mi caso, la Categoría se llama ProjectID.

2021-06-14 16_35_30-Ventana.png

¿Alguna sugerencia?

Mi publicación está aquí: DATEDIFF de filas no consecutivas

nanma94

En respuesta a Stachu

Esto ayuda. Gracias @stachu

Deja un comentario

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