Phil123456789
Hola,
Estoy buscando una medida DAX (con suerte) simple para resolver el siguiente problema.
Tengo una gama que consta de un número de empleados, un producto elegido y sus ahorros en cada producto. En una tabla diferente, necesito crear una medida que devuelva el nombre del producto que contiene la mayor suma combinada de ahorros. Por ejemplo, para la Persona 1, esto sería «Producto B», porque los 750.000 del Producto B exceden los 500.000 del Producto A (si hubiera sido al contrario, la medida debería devolver el «Producto A»).
Estoy trabajando en PowerPivot en Excel 2013 y anteriormente confié en «FIRSTNONBLANK» ya que los rangos no contenían valores duplicados. Sin embargo, esa solución ya no es suficiente. Cualquier ayuda es muy apreciada.
¡Gracias!
Ashish_Mathur
Hola,
Estas medidas funcionan
Cantidad total = SUMA (Datos[Amount])
Producto superior = PRIMER NO BLANCO ( TOPN ( 1, VALORES ( Datos[Product] ), [Total amount] ), 1 )
Espero que esto ayude.
Ashish_Mathur
En respuesta a Phil123456789
Hola,
Puede descargar mi archivo PBI desde aquí.
Espero que esto ayude.
Ashish_Mathur
Hola,
Estas medidas funcionan
Cantidad total = SUMA (Datos[Amount])
Producto superior = PRIMER NO BLANCO ( TOPN ( 1, VALORES ( Datos[Product] ), [Total amount] ), 1 )
Espero que esto ayude.
Phil123456789
En respuesta a Ashish_Mathur
Disculpas por mi respuesta tardía, no tuve la oportunidad de probar e implementar las sugerencias.
@Ashish_Mathur, su solución funcionó perfectamente, gracias. Y del mismo modo, gracias a todos los demás que vinieron con sugerencias, ¡muy apreciadas!
Ashish_Mathur
En respuesta a Phil123456789
De nada.
Phil123456789
En respuesta a Ashish_Mathur
@Ashish_Mathur, seguimiento rápido de esto.
¿Hay una manera fácil de agregar una condición a la fórmula de que la clasificación esté condicionada a que el producto no esté en blanco?
Recientemente hubo un caso en el que faltaba un producto, pero como contenía el valor más grande, se devolvió un espacio en blanco.
¡Gracias!
Ashish_Mathur
En respuesta a Phil123456789
Hola,
Comparte algunos datos y muestra el resultado esperado.
Phil123456789
En respuesta a Ashish_Mathur
@Ashish_Mathur, consulte a continuación
Ashish_Mathur
En respuesta a Phil123456789
Hola,
Puede descargar mi archivo PBI desde aquí.
Espero que esto ayude.
Phil123456789
En respuesta a Ashish_Mathur
Gracias @Ashish_Mathur, exactamente lo que estaba buscando
Ashish_Mathur
En respuesta a Phil123456789
De nada.
FrankAT
Hola @Phil123456789
echa un vistazo a la siguiente solución:
Max Amount =
Var _Rank = RANKX(ALL('Table'[Product]),[Sum of Amount],,DESC)
RETURN
IF(_Rank = 1, [Sum of Amount], BLANK())
Un cordial saludo desde el pueblo donde vive la leyenda del ‘Pied Piper of Hamelin’
FrankAT (Orgulloso de ser un Datanaut)
Phil123456789
En respuesta a FrankAT
Gracias @FrankAT, funcionó de maravilla en PowerBI.
Sin embargo, cuando intento convertir la fórmula a Excel PowerPivot, parece que no puedo hacer que funcione.
Creo que el problema es que Excel no le permitirá devolver una cadena de texto en una tabla dinámica (a menos que se use, por ejemplo, con FIRSTNONBLANK).
¿Cómo ajusto la fórmula para obtener la fórmula para devolver el Producto correcto como una cadena de texto (no necesito mostrar las cantidades reales en la tabla, solo el producto)?
v-shex-msft
En respuesta a Phil123456789
Hola @Phil123456789,
Excel y power bi utilizan una lógica y una estructura diferentes para almacenar tablas de datos.
Quizás pueda intentar convertir su tabla en la tabla de consulta y usar la ‘consulta M’ para crear una consulta de referencia para resumir los registros de la tabla sin procesar.
let
Source = RawTable,//change to your query table name
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"Product", type text}, {"Amount", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Name", "Product"}, {{"Total", each List.Sum([Amount]), type nullable number}}),
#"Grouped Rows1" = Table.Group(#"Grouped Rows", {"Name"}, {{"Count", each Table.LastN(_, 1), type table}}),
#"Expanded Count" = Table.ExpandTableColumn(#"Grouped Rows1", "Count", {"Product", "Total"}, {"Product", "Total"})
in
#"Expanded Count"
Saludos,
Xiaoxin-sheng
amichandak
@ Phil123456789, basado en lo que obtuve
Crear una clasificación Medir y filtrar Clasificación =1
medida de rango =
Rangox(todos(Tabla[product]), calcular (Suma (Tabla[Amount])))
Phil123456789
En respuesta a amichandak
Gracias @amitchandak, la fórmula parece funcionar.
Sin embargo, debido a que uso los nombres («Persona 1», «Persona 2», etc.) como filtro de fila en la tabla dinámica, actualmente solo se devuelve un producto como valor. Por lo tanto, la función de clasificación simplemente devuelve «1» para todos los empleados y, por lo tanto, no es posible filtrar.
¿Alguna sugerencia alternativa?
amichandak
En respuesta a Phil123456789
@ Phil123456789, este trabajo de clasificación de cómo medir. El que sugerí creará un rango único si se usa con el producto y si se usa con el empleado, entrará en el empleado.
Prueba como
CLASIFICACIÓNX (
FILTRAR(
TODOS( /////////O todos los seleccionados
‘Tabla'[employee],
‘Tabla'[product ]
),
‘Tabla'[employee] = MAX(‘Tabla'[employee])
),
CALCULAR(SUMA(‘Tabla'[Amount]))
)
Para el rango, consulte estos enlaces
https://radacad.com/how-to-use-rankx-in-dax-part-2-of-3-calculated-measures
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
https://community.powerbi.com/t5/Community-Blog/Dynamic-TopN-made-easy-with-What-If-Parameter/ba-p/3…
Phil123456789
En respuesta a amichandak
Gracias @amitchandak, echaré un vistazo a los enlaces.
No estoy seguro de cómo funciona la medida propuesta, ya que requiere tomar MAX de empleado, que es una cadena.