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

The Power BI DataViz World Championships are on! With four chances to enter, you could win a spot in the LIVE Grand Finale in Las Vegas. Show off your skills.

Reply
Anonymous
Not applicable

Suma dependiendo del % de los hitos

¡Hola a todos!

Permítanme tratar de explicar mi problema...

He creado una lista de hitos estándar para proyectos. Hay 11 hitos en total.

El hito que más impacto tiene es "(10) Capex Validation & Request". En mi base de datos tengo una columna que indica si el proyecto tiene o no un hito de Capex.

En el ejemplo, Project2 no tiene el hito Capex.

Sin embargo, no todos los proyectos pasan por cada hito.

En el ejemplo, Project3 no tiene el hito "(02) Validaciónde cartera" .

Me gustaría obtener una suma con el valor de Las Ventas Netas de los proyectos que pasaron por todos los hitos, excepto el 11. Pero, ¿cómo diferenciar entre los proyectos que pasan por los 10 hitos y los proyectos que no pasan por los 10 hitos?

En el ejemplo, debería obtener 230 como resultado.

https://drive.google.com/file/d/1hySgTKXn5rGervBa0CX1pHv-USW6aI7o/view?usp=sharing

Saludos

1 ACCEPTED SOLUTION

Hola

Por favor, pruebe estas medidas:

Check = IF(MAX('Table 2'[Milestone Name])="(11) Launch",1,IF(CALCULATE(MAX('Table 2'[%]),FILTER('Table 2','Table 2'[Milestone Name]<>"(11) Launch"&&'Table 2'[Project #] in FILTERS('Table 2'[Project #])))=1,1,0))
Check-2 = IF(CALCULATE(COUNTROWS('Table 2'),FILTER(ALLSELECTED('Table 2'),[Check]=1&&'Table 2'[Project #] in DISTINCT('Table 2'[Project #])))=COUNTROWS('Table 2'),1,0)
Result = SUMX(DISTINCT('Table 1'[#]),CALCULATE(SUM('Table 1'[Net Sales])*[Check-2]))

Elija la medida [Resultado] como un objeto visual de tarjeta, se muestra:

1.PNG

Aquí está mi archivo pbix cambiado:

pbix

Saludos

Giotto Zhi

View solution in original post

5 REPLIES 5
v-gizhi-msft
Community Support
Community Support

Hola

De acuerdo con su descripción y datos de muestra, creo que el resultado en esta muestra debe ser 270 no 230.

Porque ID como 1,4,5 cumple con la lógica y su total es 270.

Si es así, pruebe estas dos medidas:

check = IF(CALCULATE(COUNT('Table 2'[Milestone Name]),FILTER('Table 2','Table 2'[Project #] in FILTERS('Table 2'[Project #])&&'Table 2'[Milestone Name]<>"(11) Launch"))=10,1,0)
Total = CALCULATE(SUM('Table 1'[Net Sales]),FILTER('Table 1','Table 1'[#] in FILTERS('Table 1'[#])&&[check]=1))

Seleccione [Total] de medida como visual de tarjeta, el resultado muestra:

22.PNG

Si malinterpreto su lógica, por favor dé más información sobre cómo calculó el resultado como 230?

¡Espera tu respuesta!

Saludos

Giotto Zhi

Anonymous
Not applicable

Hola @v-gizhi-msft

Trataré de explicarlo mejor.

Para calcular esta "Tasa de conversión", los proyectos deben tener todos los hitos de 01 a 10 en 100%.

Project1 tiene todos los hitos (entre 01 y 10) al 100% - SUM

Project2 tiene todos los hitos (entre 01 y 09) al 100% - SUM

  • Project2 no tiene el hito 10, porque no es necesario

Project3 tiene todos los hitos (entre 01 y 10) al 100% - SUM

  • Project3 no tiene el hito 02, porque no es necesario

Project4 todavía está en el hito 07 - NO SUM

Project5 todavía está en el hito 01 - NO SUM

Para hacer este cálculo, estaba usando esta fórmula.

final Sales = if( sumx(filter(milestones,milestones[Project ID] =projects[Project ID] && milestones[Milestone Name] in {" Milestone01","Milestone02","Milestone03","Milestone04","Milestone05","Milestone06","Milestone07","Milestone08","Milestone09","Milestone10"} ),milestones[%]) =1000, [Net Sales],0)

Pero depende de que los proyectos tengan TODOS los hitos: S

Saludos

Hola

Por favor, pruebe estas medidas:

Check = IF(MAX('Table 2'[Milestone Name])="(11) Launch",1,IF(CALCULATE(MAX('Table 2'[%]),FILTER('Table 2','Table 2'[Milestone Name]<>"(11) Launch"&&'Table 2'[Project #] in FILTERS('Table 2'[Project #])))=1,1,0))
Check-2 = IF(CALCULATE(COUNTROWS('Table 2'),FILTER(ALLSELECTED('Table 2'),[Check]=1&&'Table 2'[Project #] in DISTINCT('Table 2'[Project #])))=COUNTROWS('Table 2'),1,0)
Result = SUMX(DISTINCT('Table 1'[#]),CALCULATE(SUM('Table 1'[Net Sales])*[Check-2]))

Elija la medida [Resultado] como un objeto visual de tarjeta, se muestra:

1.PNG

Aquí está mi archivo pbix cambiado:

pbix

Saludos

Giotto Zhi

Anonymous
Not applicable

Muchas gracias @v-gizhi-msft

Funcionó perfectamente.


Pero, ¿podría explicarme la lógica detrás del código?

Saludos

Hola

La primera medida [check] es mostrar el progreso (Si experimenta todos los hitos) para cada proyecto.

La segunda medida [check-2] consiste en encontrar el proyecto que experimenta todos los hitos.

La medida [result] consiste en encontrar el valor correspondiente por [check-2] para sumar el resultado final.

Saludos

Giotto Zhi

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

Feb2025 NL Carousel

Fabric Community Update - February 2025

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

Top Solution Authors
Top Kudoed Authors