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.
Hola, chicos
Mi mente se ha quedado completamente en blanco en esto, así que tal vez alguien pueda señalarme en la dirección correcta.
Tengo una tabla que contiene registros de activos, en su forma más simple se ve así a continuación:
Me han pedido que lo descubra
1. el 25% más antiguo de los activos en el patrimonio (la edad se basa en la columna de fecha de compra)
2. El coste de la sustitución del 25 % más antiguo (un portátil de reemplazo de 1300 euros, un escritorio de reemplazo de 750 euros, un servidor de sustitución de 5000 euros)
Simplemente no puedo encontrar la mejor función para crear las medidas necesarias. Cualquier idea muy bienvenida 🙂
Hola @PhoenixBird ,
Puede utilizar la función RANKX() para obtener los registros del 25% más antiguos.
Fórmulas para su referencia.
measure 1 = SELECTEDVALUE('Table'[date])
Measure 2 =
RANKX ( ALL ( 'Table' ), [measure 1],, ASC, DENSE )
Measure 3 =
IF ( [Measure 2] < MAXX ( ALL ( 'Table' ), [Measure 2] ) * .25, 1, 0 )
Measure 4 =
IF (
[Measure 3] = 1,
SWITCH (
TRUE (),
SELECTEDVALUE ( 'Table'[type] ) = "laptop", 1500,
SELECTEDVALUE ( 'Table'[type] ) = "desktop", 750,
SELECTEDVALUE ( 'Table'[type] ) = "server", 5000
),
SELECTEDVALUE ( 'Table'[value] )
)
Measure 5 = SUMX(ALL('Table'),'measure'[Measure 4])
La medida 1 y 2 hacen el trabajo de clasificación, la medida 3 marca los registros más antiguos del 25% y luego la medida 4 reemplaza los valores y mide 5 suma los valores.
En additon, podría combinar estas fórmulas si lo desea.
Saludos
Jay
Gracias por tu ayuda Jay. Esto parece más prometedor.
La medida 1 funciona bien. Sin embargo, hay un problema cuando agredo la Medida 2 a la tabla. La medida 1 devuelve en blanco para algunos activos y la medida 2 devuelve "1" para muchos de ellos (porque la medida 1 no puede devolver la fecha de compra)..
@PhoenixBird
Para calcular el coste de sustitución del 25% más antiguo de los activos, agregue una nueva columna a la tabla de activos para calcular la edad en días de la siguiente manera:
Asset Age = DATEDIFF( [Purchase Date] , TODAY() , DAY )
Cree la siguiente Medida para calcular el Coste de sustitución: Si necesita cambiar el 25%, cambie el valor _Age
Replacement Cost-Oldest 25% =
VAR _Age = 0.25
VAR _TOTAL = COUNTROWS( ALLSELECTED(Table4) )
RETURN
SUMX(
Table4,
VAR _BELOW = COUNTROWS( FILTER( ALL(Table4[Asset Age]) , Table4[Asset Age] < EARLIER([Asset Age]) )) RETURN
IF( DIVIDE( _BELOW , _TOTAL ) >= (1-_Age) ,
SWITCH( Table4[Machine Type] ,
"Laptop" , 1300,
"Desktop" , 750,
"Server" , 5000
)
)
)
Salida deseada:
________________________
Si mi respuesta fue útil, por favor Acédárlala como la solución para ayudar a los otros miembros
Haga clic en el icono Thumbs-Up si le gusta esta respuesta 🙂
⭕ Subscribe and learn Power BI from these videos
⚪ Website ⚪ LinkedIn ⚪ PBI User Group
Gracias. He intentado esto, pero no parece obtener ningún valor usando la nueva medida? ¡No estoy seguro de lo que estoy haciendo mal!
@Anonymous
Can you check if any date filter is applied? Hope you can see the Asset Age Column with values.
Share a sample PBIX file with dummy data to check
________________________
If my answer was helpful, please consider Accept it as the solution to help the other members find it
Click on the Thumbs-Up icon if you like this reply 🙂
⭕ Subscribe and learn Power BI from these videos
⚪ Website ⚪ LinkedIn ⚪ PBI User Group
@PhoenixBird , creo que necesita crear rango y encontrar percentil. Basado en la fecha de compra.
Añadir segundos aleatorios para la fecha un intento de crear una columna de rango único en la fecha de compra y luego dividir por rango máximo para obtener por debajo de .25
Para rango Consulte estos enlaces
https://radacad.com/how-to-use-rankx-in-dax-part-1-of-3-calculated-columns
https://radacad.com/how-to-use-rankx-in-dax-part-3-of-3-the-finale // Disyuntor de corbata para rango
Percentil superior
https://blog.enterprisedna.co/implementing-80-20-logic-in-your-power-bi-analysis/
https://forum.enterprisedna.co/t/testing-the-pareto-principle-80-20-rule-in-power-bi-w-dax/459
Hola @PhoenixBird
Podrías probar esto
Vaya al Editor de consultas, ordene la fecha de más antigua a más reciente, agregue una columna de índice. A continuación, cree una nueva medida con la función MAX en la columna de índice y divídala por 4 (lo que le da un 25%). Creo que la medida tendrá este aspecto: Old_25 - MAX([IndexColumn]/4
A continuación, aplique un filtro en la columna de índice, cualquier número que sea menor o igual a Old_25 será el activo del 25% más antiguo.
Gracias por la sugerencia,. Agregué una columna de índice e intenté hacer la medida como describió, pero no funciona del todo:
Hola @PhoenixBird
Cree una nueva columna en la tabla con todos sus datos:
Filtro de 25% antiguo : if([Index] <- [Más antiguo 25%], "Sí", "No")
Cualquier cosa aquí que sea un "Sí" será su activo más antiguo del 25%.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |