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.
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
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.
¿Alguna sugerencia?
Mi publicación está aquí: DATEDIFF de filas no consecutivas
nanma94
En respuesta a Stachu
Esto ayuda. Gracias @stachu